您的位置:首页 > 其它

【杭电1084】What Is Your Grade?

2016-07-21 08:28 363 查看
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node {
int x;
char s[10];
} a[100];
int main()
{
int n;
while(scanf("%d",&n),n!=-1)
{
for(int i=0; i<n; i++)
{
scanf("%d %s",&a[i].x,&a[i].s);
}
int t[5]= {0};
for(int i=4; i>0; i--)//做出相同题数的人的个数
{
for(int j=0; j<n; j++)
{
if(a[j].x==i)
t[i]++;
}
}
for(int i=0; i<n; i++)
{
if(a[i].x==5)
printf("100\n");
else if(a[i].x==0)
printf("50\n");
else {
int k=0;
for(int 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\n",100-(5-a[i].x)*10);
else
printf("%d\n",100-(5-a[i].x)*10+5);
}
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: