记录编号 |
33367 |
评测结果 |
AAAAAAAAAA |
题目名称 |
韩国明星 |
最终得分 |
100 |
用户昵称 |
Czb。 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.409 s |
提交时间 |
2011-11-10 14:28:27 |
内存使用 |
10.18 MiB |
显示代码纯文本
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
struct Node
{
int key;
Node *a[130];
Node()
{
key=0;
for(int i=0;i<=129;i++)
a[i]=NULL;
}
};
struct aaa
{
char c[100];
int key;
}a[100001];
int n,m,l,tmp;
char c[100];
int cmp(const void *a,const void *b)
{
return (*(aaa *)b).key-(*(aaa *)a).key;
}
int main()
{
freopen("star.in","r",stdin);
freopen("star.out","w",stdout);
int i,j;
Node *head=new Node;
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
scanf("%[^\n]\n",&a[i].c);
l=strlen(a[i].c);
Node *p=new Node;
p=head;
for(j=0;j<l;j++)
{
if(p->a[a[i].c[j]]==NULL)
{
Node *q=new Node;
p->a[a[i].c[j]]=q;
q=NULL;
delete q;
}
p=p->a[a[i].c[j]];
}
p->key=i;
p=NULL;
delete p;
}
scanf("%d\n",&m);
for(i=1;i<=m;i++)
{
scanf("%[^\n]\n%d\n",&c,&tmp);
l=strlen(c);
Node *p=new Node;
p=head;
for(j=0;j<l;j++)
p=p->a[c[j]];
a[p->key].key+=tmp;
p=NULL;
delete p;
}
qsort(a+1,n,sizeof(aaa),cmp);
for(i=1;i<=n;i++)
printf("%s\n%d\n",a[i].c,a[i].key);
delete head;
fclose(stdin);
fclose(stdout);
return 0;
}