记录编号 153673 评测结果 AAAAAAAAAA
题目名称 韩国明星 最终得分 100
用户昵称 Gravatarnew ioer 是否通过 通过
代码语言 C++ 运行时间 0.156 s
提交时间 2015-03-18 19:04:45 内存使用 13.28 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct trie{
	int p;
	trie *c[52];
	trie(){
		p=0;
		for(int i=0;i<52;i++) c[i]=NULL;
	}
};
struct star{
	int love;
	char name[30];
	bool operator <(const star &sb) const{
		return love > sb.love;
	} 
}a[100001];
int n,m,k,len;
char buf[30],ch[10000000],*ptr=ch;
int f(char c){
	if(c<='Z') return c-'A';
	return c-'a'+26;
}
void in(int &x){
	bool flag=0;
	while(*ptr<40) ptr++;
	if(*ptr==45) flag=1,x=0;
	else x=*ptr-48;ptr++;
	while(*ptr>47) x=x*10+*ptr++-48;
	if(flag) x=-x;
}
void readln(char *c){
	int cnt=0;
	while(*ptr<60) ptr++;
	while(*ptr>60) c[cnt++]=*ptr++;
}
void ins(int p,int i,trie *&o){
	if(o==NULL) o=new trie;
	if(i+1==len) {o->p=p;return;}
	ins(p,i+1,o->c[f(a[p].name[i+1])]);
} 
int ask(int i,trie *&o){
	if(i+1==len) return o->p;
	return ask(i+1,o->c[f(buf[i+1])]);
}
int main(){
	freopen("star.in","r",stdin);
	freopen("star.out","w",stdout);
	fread(ch,1,10000000,stdin);
	in(n);
	trie *root=new trie;
	for(int i=1;i<=n;i++) readln(a[i].name),len=strlen(a[i].name),ins(i,0,root->c[f(a[i].name[0])]);
	in(m);
	for(int i=1;i<=m;i++) readln(buf),in(k),len=strlen(buf),a[ask(0,root->c[f(buf[0])])].love+=k;
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++) printf("%s\n%d\n",a[i].name,a[i].love);
}