比赛 20121106 评测结果 WAAAAAWWWWWW
题目名称 H 指数因子 最终得分 41
用户昵称 苏轼 运行时间 0.009 s
代码语言 C++ 内存使用 3.04 MiB
提交时间 2012-11-06 10:26:53
显示代码纯文本
#include <fstream>
using namespace std;
ifstream cin("publish.in");
ofstream cout("publish.out");
int n,p[101][101],s=1,w[101],zong[101],ans[101];
string st[101];
void init()
{
	int i,j,k,q;char a;
	string st1;
	cin>>n;
	for (i=0;i<=n;i++)
		for (j=0;j<=n;j++) p[i][j]=0;
	cin>>st1;st[1]=st1;w[1]=1;zong[1]++;
	for (i=2;i<=n;i++)
	{
		cin>>st1;
		for (j=1;j<=s;j++)
		{
			if (st[j]==st1) {w[i]=j;zong[j]++;break;}
		}
		if (j==s+1) 
		{
			s++;w[i]=s;zong[i]=1;st[s]=st1;
		}
	}
	for (i=1;i<=n;i++)
		for (j=1;j<=n;j++)
		{
			cin>>a;
			if (a=='1')
			{
				q=0;
				for (k=1;k<=j;k++)
					if (w[k]==w[j]) q++;
				p[w[j]][q]++;
			}
		}
}
int main()
{
	int i,j,q,h;
	string o;
	init();
	for (i=1;i<=s;i++)
	{
		for (h=0;h<=zong[i];h++)
		{
			q=0;
			for (j=1;j<=zong[i];j++)
			{
				if (p[i][j]>=h) q++;
			}
			if (q==h) ans[i]=h;
		}
	}
	for (i=1;i<=s-1;i++)
		for (j=i+1;j<=s;j++)
		{
			if (ans[i]<ans[j])
			{
				q=ans[i];ans[i]=ans[j];ans[j]=q;
				o=st[i];st[i]=st[j];st[j]=o;
			}
			if (ans[i]==ans[j])
			{
				if (st[j]<st[i])
				{
					q=ans[i];ans[i]=ans[j];ans[j]=q;
					o=st[i];st[i]=st[j];st[j]=o;
				}
			}
		}
	for (i=1;i<=s;i++)
		cout<<st[i]<<' '<<ans[i]<<endl;
	return 0;
}