在全新的卡牌世界里,每一张卡牌都代表了一个英雄,英雄有自己的名字s和武力值w,英雄的名字是一个字符串,武力值是一个浮点数,武力值越高,则代表英雄的武力越强,而在武力相同的情况下,名字的字典序越靠前,则能力越强。
kk拥有n张卡牌,而bm有q张卡牌,kk想知道对于bm的每一张卡牌,自己的n张卡牌中总共有几张卡牌能够战胜他,战胜的条件则是能力值比他高,或者在能力值相同的情况下英雄名字的字典序比他靠前,如果能力值和名字完全一样,则平手。
字典序的定义在下方的hint中。
单组测试样例。
第一行是一个n,代表kk拥有n张卡牌。
接下来有n行,每行有一个字符串s,和一个浮点数w。
第n+2行是一个q,代表bm拥有q张卡牌。
接下来有q行,每行有一个字符串s,和一个浮点数w。
(s 和 w的含义如题目中描述,(1 \leq n, q\leq 100000),(1 \leq length(s)\leq 5),名字均为小写字母(1 \leq w \leq 100),且w均为1位小数)
对于bm的每张卡牌,都输出一个整数,代表kk的卡牌中,能打败bm的卡牌的数量,若没有能打败bm的卡牌,则输出0。
名字可能会有重复。
不建议用c++的cin和cout做读入和输出,可能会导致超时。
字典序定义:
按照第一个字母、以 a、b、c……z 的顺序排列;如果第一个字母一样,那么比较第二个、第三个乃至后面的字母。如果比到最后两个单词不一样长(比如,sigh 和 sight),那么把短者排在前。(来自百度百科)