比赛 |
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;
}