Result: Accepted
Time: 22ms
Memory: 1732kB
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
struct ll
{
string s;
int a;
int rank;
}num[1005];
int cmp(ll a,ll b)
{
return a.a>b.a;
}
int main()
{
int n,i,t,k;
string l,l2=":";
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;++i)
{
cin>>num[i].s;
scanf("%d",&num[i].a);
}
sort(num,num+n,cmp);
k=0;
for(i=0;i<n;++i)
{
if(num[i].a==num[i-1].a)
{
k++;
num[i].rank=i-k;
}
else
{
k=0;
num[i].rank=i;
}
}
map<string ,int>q;
for(i=0;i<n;++i)
{
q[num[i].s]=num[i].rank;
}
scanf("%d",&t);
while(t--)
{
cin>>l;
l+=l2;
printf("%d\n",q[l]);
}
}
}