比赛 20121106 评测结果 AWAWWWWWWWWW
题目名称 H 指数因子 最终得分 16
用户昵称 Cloud 运行时间 0.007 s
代码语言 C++ 内存使用 2.95 MiB
提交时间 2012-11-06 08:57:44
显示代码纯文本
#include<cstring>
#include<cstdlib>
#include<fstream>
using namespace std;
struct yu
{
	string name;
	int n,h;
	int a[100][2];
}s[100];
int cmp(const void *a,const void  *b)
{
	struct yu *c=(struct yu *)a;
	struct yu *d=(struct yu *)b;
	if(c->h!=d->h)
		return d->h - c->h;
	else
		return *(string *)c > *(string *)d ?1:-1;
}	
int Min(int x,int y)
{
	if(x>y)
		return y;
	else
		return x;
}
int main(void)
{
	ifstream fin("publish.in");
	ofstream fout("publish.out");
	int m;
	fin>>m;
	int i,j,k;
	for(i=0,j=0;i<m;i++)
	{
		fin>>s[j].name;
		s[j].a[s[j].n][0]=i;
		s[j].n++;
		j++;
		for(k=0;k<j-1;k++)
			if(s[k].name==s[j-1].name)
			{
				s[k].a[s[k].n][0]=i;
				s[k].n++;
				j--;
				break;
			}
	}
	int hnum[100][100];
	string st;
	for(i=0;i<m;i++)
	{
		fin>>st;
		for(k=0;k<m;k++)
		{
			hnum[i][k]=st[k]-'0';
			if(i==k)
				hnum[i][k]=0;
		}
	}
	int p,q;
	int min=~0u>>1;
	for(i=0;i<j;i++)
	{
		min=~0u>>1;
		for(k=0;k<s[i].n;k++)
		{
			p=s[i].a[k][0];
			for(q=0;q<m;q++)
				s[i].a[k][1]+=hnum[q][p];
			if(s[i].a[k][1]<min)
				min=s[i].a[k][1];
		}
		s[i].h=Min(min,s[i].n);
	}
	qsort(s,j,sizeof(s[0]),cmp);
	for(i=0;i<j;i++)
		fout<<s[i].name<<" "<<s[i].h<<endl;
	fin.close();
	fout.close();
	return 0;
}