407835: GYM102899 D KK 与卡牌
Description
在全新的卡牌世界里,每一张卡牌都代表了一个英雄。
英雄有自己的名字 $$$s$$$ 和武力值 $$$w$$$,英雄的名字是一个字符串,武力值是一个浮点数。
- 武力值越高,则代表英雄的武力越强。
- 在武力相同的情况下,名字的字典序越靠前,则能力越强。
kk 拥有 $$$n$$$ 张卡牌,而 bm 有 $$$q$$$ 张卡牌,kk 想知道对于 bm 的每一张卡牌,自己的 $$$n$$$ 张卡牌中总共有几张卡牌能够战胜他。
战胜的条件是:
- 能力值比他高。
- 或者在能力值相同的情况下英雄名字的字典序比他靠前,如果能力值和名字完全一样,则平手。
字典序的定义在下方的 Note 中。
Input第一行是一个整数 $$$n(1 \leq n \leq 10^5)$$$,代表 kk 拥有 $$$n$$$ 张卡牌。
接下来有 $$$n$$$ 行,每行有一个字符串 $$$s(1 \leq |s| \leq 5)$$$,和一个浮点数 $$$w(0 \leq w \leq 10^2)$$$。
第 $$$n + 2$$$ 行是一个 $$$q(1 \leq q \leq 10^5)$$$,代表 bm 拥有 $$$q$$$ 张卡牌。
接下来有 $$$q$$$ 行,每行有一个字符串 $$$s(1 \leq |s| \leq 5)$$$,和一个浮点数 $$$w(0 \leq w \leq 10^2)$$$。
$$$s$$$ 和 $$$w$$$ 的含义如题目中描述, 名字均为小写字母, $$$w$$$ 均为1位小数。
名字可能会有重复。
Output对于 bm 的每张卡牌,都输出一个整数,代表 kk 的卡牌中,能打败 bm 的卡牌的数量,若没有能打败 bm 的卡牌,则输出 $$$0$$$。
ExampleInput5 tom 3.5 joe 1.0 jark 2.1 emily 1.5 kk 1.2 4 kk 1.2 kk 1.6 aa 0.9 aa 2.2Output
3 2 5 1Note
不建议在不关同步的情况下,用 cpp 的 cin 和 cout 做读入和输出,可能会导致超时。
字典序定义:
按照第一个字母、以 a、b、c...z 的顺序排列;如果第一个字母一样,那么比较第二个、第三个乃至后面的字母。如果比到最后两个单词不一样长(比如,sigh 和 sight),那么把短者排在前。(来自百度百科)