记录编号 33460 评测结果 AAAAAAAAAA
题目名称 韩国明星 最终得分 100
用户昵称 GravatarYeehok 是否通过 通过
代码语言 C++ 运行时间 1.421 s
提交时间 2011-11-10 19:07:57 内存使用 10.56 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
using namespace std;
int n,m;
struct node
{
	int numi;
	node *next[130];
	node()
	{
		for(int i=0;i<130;i++)
			next[i]=NULL;
		numi=0;
	}
};
struct star
{
	int num;
	char name[101];
}st[100001];
int cmp(const void *a,const void *b)
{
	struct star *c=(struct star *)a;
	struct star *d=(struct star *)b;
	return (d->num - c->num);
}
int main()
{
	freopen("star.in","r",stdin);
	freopen("star.out","w",stdout);
	int i,j,len,ber;
	node *head=new node;
	char tmp[100];
	scanf("%d\n",&n);
	for(i=0;i<n;i++)
	{
		scanf("%[^\n]\n",&st[i].name);
		len=strlen(st[i].name);
		node *p=new node;
		p=head;
		for(j=0;j<len;j++)
		{
			if(p->next[int(st[i].name[j])]==NULL)
			{
				node *q=new node;
				p->next[int(st[i].name[j])]=q;
				q=NULL;
				delete q;
			}
			p=p->next[int(st[i].name[j])];
		}
		p->numi=i;
		p=NULL;
		delete p;
	}
	scanf("%d\n",&m);
	for(i=0;i<m;i++)
	{
		scanf("%[^\n]\n%d\n",&tmp,&ber);
		len=strlen(tmp);
		node *p=new node;
		p=head;
		for(j=0;j<len;j++)
		{
			p=p->next[int(tmp[j])];
		}
		st[p->numi].num+=ber;
		p=NULL;
		delete p;
	}
	qsort(st,n,sizeof(star),cmp);
	for(i=0;i<n;i++)
	{
		printf("%s\n%d\n",st[i].name,st[i].num);
	}
	delete head;
	fclose(stdin);
	fclose(stdout);
	return (0);
}