记录编号 267914 评测结果 AAAAAAAAAA
题目名称 韩国明星 最终得分 100
用户昵称 Gravatar核糖核酸 是否通过 通过
代码语言 C++ 运行时间 0.242 s
提交时间 2016-06-11 19:07:21 内存使用 118.19 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
struct Node{
    int c[60];
    int hash;
};
static Node s[500000];
int Index=0;
struct Person{
    char name[10];
    int val;
};
static Person h[100005];
int N, M, tot=0, p, x;

bool cmp(const Person a, const Person b)
{
    if(a.val!=b.val) return a.val>b.val;
    return strcmp(a.name,b.name);
}

int main()
{
    freopen("star.in","r",stdin);
    freopen("star.out","w",stdout);
    scanf("%d", &N);
    s[0].hash = 0;
    for(int i=1; i<=N; i++)
    {
        scanf("%s", h[i].name);
        h[i].val = 0;
        int sz = strlen(h[i].name);
        p = 0;
        for(int j=0; j<sz; j++)
        {
            x = h[i].name[j] - 'A';
            if(s[p].c[x] == 0) s[p].c[x] = ++Index;
            p = s[p].c[x];
            if(j==(sz-1)) s[p].hash = i;
        }
    }
    scanf("%d", &M);
    for(int i=1; i<=M; i++)
    {
        scanf("%s", h[0].name);
        scanf("%d", &h[0].val);
        int sz = strlen(h[0].name);
        p = 0;
        for(int j=0; j<sz; j++)
        {
            x = h[0].name[j] - 'A';
            p = s[p].c[x];
        }
        h[s[p].hash].val += h[0].val;
    }
    sort(h+1, h+N+1, cmp);
    for(int i=1; i<=N; i++)
    {
        printf("%s\n", h[i].name);
        printf("%d\n", h[i].val);
    }
    fclose(stdin);  fclose(stdout);
    return 0;
}