比赛 20121106 评测结果 AAAAAAAAAAAA
题目名称 H 指数因子 最终得分 100
用户昵称 苏轼 运行时间 0.016 s
代码语言 C++ 内存使用 3.15 MiB
提交时间 2012-11-06 10:31:37
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<map>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
int n,num=1;
vector<int>con[205];
map<string,int>w;
int q[105]={0};
string s;

struct hehe
{
	string ss;
	int h;
}ans[200];
bool cmp(hehe a,hehe b)
{
	if (a.h!=b.h)
		return a.h>b.h;
	return a.ss<b.ss;
}
int main()
{
	freopen ("publish.in","r",stdin);
	freopen ("publish.out","w",stdout);
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		cin>>s;
		if (w[s]==0)
		{
			w[s]=num;
			ans[num].ss=s;
			ans[num].h=0;
			con[num].push_back(i);
			num++;
		}
		else
		{
			con[w[s]].push_back(i);
		}
	}
	for (int i=1;i<=n;i++)
	{
		cin>>s;
		s='0'+s;
		for (int j=1;j<s.size();j++)
		{
			if (s[j]=='1')
			{
				q[j]++;
			}
		}
	}
	for (int o=1;o<num;o++)
	{
		int xiao,da,deng;
		for (int j=con[o].size();j>=0;j--)
		{
			xiao=da=deng=0;
			for (int k=0;k<con[o].size();k++)
			{
				if (q[con[o][k]]<j)
					xiao++;
				if (q[con[o][k]]==j)
					deng++;
				if (q[con[o][k]]>j)
					da++;
			}
			if (da+deng>=j)
			{
				ans[o].h=j;
				break;
			}
		}
	}
	sort(ans+1,ans+num,cmp);
	for (int i=1;i<num;i++)
	{
		cout<<ans[i].ss<<' '<<ans[i].h<<endl;
	}
	return 0;
}