比赛 20121106 评测结果 AAAAAAAAAAAA
题目名称 H 指数因子 最终得分 100
用户昵称 TBK 运行时间 0.010 s
代码语言 C++ 内存使用 3.19 MiB
提交时间 2012-11-06 09:03:09
显示代码纯文本
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <set>
#include <queue>
#include <algorithm>
#define MAXN 0x7fffffff
using namespace std;
int b,c,d,l,m,n,k[101],r[101][101],x[101];
char cha[102][30],cc[30],hh;
struct fun
{
	char ch[30];
	int k;
}f[101];
int Compare(const void*elem1,const void*elem2)
{
	struct fun *elem3=(struct fun *)elem1;
	struct fun *elem4=(struct fun *)elem2;
	if (elem3->k != elem4->k) return elem4->k - elem3->k;
		else return strcmp(elem3->ch,elem4->ch);
}
int main(void)
{
    freopen("publish.in","r",stdin);
    freopen("publish.out","w",stdout);
	scanf("%d",&b);
	for (c=0;c<b;c++)
	{
		cin>>cc;
		for (d=0;d<n;d++)
			if (strcmp(cc,cha[d])==0) break;
		if (d==n)
		{
			for (l=0;l<strlen(cc);l++) cha[n][l]=cc[l];
			r[n][x[n]]=c+1;
			x[n]++; 
			n++;
		}
			else 
			{
				r[d][x[d]]=c+1;
				x[d]++; 
			}
	}
	for (c=1;c<=b;c++)
		for (d=1;d<=b;d++)
		{
			cin>>hh;
			if (hh=='1') k[d]++;
		}
	for (c=0;c<n;c++)
	{
		for (d=0;d<strlen(cha[c]);d++) f[c].ch[d]=cha[c][d];
		for (d=0;d<x[c];d++) r[c][d]=k[r[c][d]];
		for (d=0;d<x[c]-1;d++)
			for (l=d+1;l<x[c];l++)
				if (r[c][d]<r[c][l])
				{
					m=r[c][d];
					r[c][d]=r[c][l];
					r[c][l]=m;
				}
		for (d=1;d<=x[c];d++)
			if (r[c][d-1]<d) break;
		d--;
		f[c].k=d;
	}
	qsort(f,n,sizeof(fun),Compare);
	for (c=0;c<n;c++) cout<<f[c].ch<<" "<<f[c].k<<endl;
	fclose(stdin);
    fclose(stdout);
    return 0;
}