Start: Dec, 27, 2015 17:15:00
2015年秋学期《程序设计基础》第三次上机考试
End: Dec, 27, 2015 20:45:00
Time elapsed:
Time remaining:

Problem_ID: G
Result: Accepted
Time: 22ms
Memory: 1732kB
Author: 2015210402108
In contest: 1043

#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]);
		}
	}
}