题目链接:acm.hust.edu.cn/vjudge/contest/126708#problem/E
解题思路:5是100,4是90,3是80,2是70,1是60,然后看时间,如果做出相同的题目个数,就看他们的时间排名,一半以上的加五分。
代码如下:
#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
int x;
char s[10];
}a[100];
int main()
{
int n,i,j,t[5];
while(scanf("%d",&n)&&n!=-1)
{
for(i=0;i<n;i++)
scanf("%d%s",&a[i].x,&a[i].s);
memset(t,0,sizeof(t));
for(i=1;i<=4;i++)
for(j=0;j<n;j++)
if(a[j].x==i)
t[i]++;
for(i=0;i<n;i++)
{
int k=0;
if(a[i].x==5)
printf("100
");
else if(a[i].x==0)
printf("50
");
else
{
for(j=0;j<n;j++)
if(a[j].x==a[i].x&&strcmp(a[j].s,a[i].s)<0)
k++;
if(k>=t[a[i].x]/2)printf("%d
",a[i].x*10+50);
else printf("%d
",a[i].x*10+55);
}
}
printf("
");
}
return 0;
}