407835: GYM102899 D KK 与卡牌

Memory Limit:256 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

D. KK 与卡牌time limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output

在全新的卡牌世界里,每一张卡牌都代表了一个英雄。

英雄有自己的名字 $$$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$$$。

ExampleInput
5
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.2
Output
3
2
5
1
Note

不建议在不关同步的情况下,用 cpp 的 cin 和 cout 做读入和输出,可能会导致超时。

字典序定义:

按照第一个字母、以 a、b、c...z 的顺序排列;如果第一个字母一样,那么比较第二个、第三个乃至后面的字母。如果比到最后两个单词不一样长(比如,sigh 和 sight),那么把短者排在前。(来自百度百科)

加入题单

上一题 下一题 算法标签: