您的位置:首页 > 其它

杭电1084What Is Your Grade?

2016-07-19 18:03 309 查看
H - What Is Your Grade?(结构体+(sort))
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d
& %I64u
Submit Status

Description

“Point, point, life of student!” 

This is a ballad(歌谣)well known in colleges, and you must care about your score in this exam too. How many points can you get? Now, I told you the rules which are used in this course. 

There are 5 problems in this final exam. And I will give you 100 points if you can solve all 5 problems; of course, it is fairly difficulty for many of you. If you can solve 4 problems, you can also get a high score 95 or 90 (you can get the former(前者) only
when your rank is in the first half of all students who solve 4 problems). Analogically(以此类推), you can get 85、80、75、70、65、60. But you will not pass this exam if you solve nothing problem, and I will mark your score with 50. 

Note, only 1 student will get the score 95 when 3 students have solved 4 problems. 

I wish you all can pass the exam! 

Come on! 

 

Input

Input contains multiple test cases. Each test case contains an integer N (1<=N<=100, the number of students) in a line first, and then N lines follow. Each line contains P (0<=P<=5 number of problems that have been solved) and T(consumed
time). You can assume that all data are different when 0<p. 

A test case starting with a negative integer terminates the input and this test case should not to be processed. 

 

Output

Output the scores of N students in N lines for each case, and there is a blank line after each case. 

 

Sample Input

4
5 06:30:17
4 07:31:27
4 08:12:12
4 05:23:13
1
5 06:30:17
-1

 

Sample Output

100
90
90
95

100

 #include<stdio.h>

#include<string.h>

#include<algorithm>

using namespace std;

struct node{
int p;
char st[20];
int r;
int mark;

}num[110];

bool cmp1(node a,node b)

{
if(a.p==b.p)
return strcmp(a.st,b.st)<0;
else
return a.p>b.p;

}

bool cmp2(node a,node b)

{
return a.r<b.r;

}

int main()

{
int n,i,a,b,c,j;
int l[10],sum[10];
while(scanf("%d",&n)&&(n>0))
{
memset(l,0,sizeof(l));
for(i=0;i<n;i++)
   {
    scanf("%d%s",&num[i].p,num[i].st);
    num[i].r=i;
    l[num[i].p]++;
}
sum[5]=l[5];
for(i=4;i>=0;i--)
sum[i]=sum[i+1]+l[i];
sort(num,num+n,cmp1);
for(i=0;i<n;i++)
{
  num[i].mark=50+num[i].p*10;
  if(num[i].p>=1&&num[i].p<5&&i<(sum[num[i].p+1]+l[num[i].p]/2))
  num[i].mark+=5;
}
sort(num,num+n,cmp2);
for(i=0;i<n;i++)
printf("%d\n",num[i].mark);
printf("\n");
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: