记录编号 |
153673 |
评测结果 |
AAAAAAAAAA |
题目名称 |
韩国明星 |
最终得分 |
100 |
用户昵称 |
new 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);
}