比赛 20111110 评测结果 AAAATTTTTT
题目名称 韩国明星 最终得分 40
用户昵称 Makazeu 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-10 10:46:11
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
int N,K;

class STRING
{
public:
	char str[100];
	int len;
	int Suki;
	void Init()
	{
		memset(str,'\0',sizeof(str));
		Suki=0;
	}
}S[200000];
int top=0;

void Insert(char *str,int len)
{
	top++;
	S[top].Init();
	S[top].len=len;
	for (int i=0;i<len;i++)
		S[top].str[i]=str[i];
}

void check(char *str,int len,int change)
{
	for (int i=1;i<=top;i++)
	{
		if(S[i].len!=len)
			continue;
		bool flag=true;
		for (int j=0;j<S[i].len;j++)
		{
			if(str[j]!=S[i].str[j])
			{
				flag=false;
				break;
			}
		}
		if(flag)
		{
			S[i].Suki+=change;
			break;
		}
	}
}

int cmp(const void *a,const void *b)
{
	class STRING *c=(class STRING *)a;
	class STRING *d=(class STRING *)b;
	return d->Suki-c->Suki;
}

void init()
{
	char str[100];
	scanf("%d\n",&N);
	for (int i=1;i<=N;i++)
	{
		memset(str,'\0',sizeof(str));
		scanf("%[^\n]\n",&str);
		Insert(str,strlen(str));
	}
	scanf("%d\n",&K);
	int tmp;
	for (int i=1;i<=K;i++)
	{
		memset(str,'\0',sizeof(str));
		scanf("%[^\n]\n",&str);
		scanf("%d\n",&tmp);
		check(str,strlen(str),tmp);
	}
	qsort(S+1,top,sizeof(S[0]),cmp);
	
	for(int i=1;i<=top;i++)
	{
		printf("%s\n",S[i].str);
		printf("%d\n",S[i].Suki);
	}
}

int main()
{
	freopen("star.in","r",stdin);
	freopen("star.out","w",stdout);
	init();
	return 0;
}