What Is Your Grade?(结构体+(sort))
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
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!
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.
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 题解: 给你n个人解决题目数,以及所用时间,共有5道题,0——50,1——60,2——70,3——80,4——90,5——100 然后相同题数,前一半解决的人加工分,输出分数 代码:#include <cstdio> #include <algorithm> using namespace std; struct p{ int num,sco,no; }a[101]; bool cmp(p a,p b){//排序 if(a.num==b.num) return a.sco<b.sco; return a.num>b.num; } int sco[101]; int main(void){ int n,x,y,z; while(~scanf("%d",&n)){ if(n==-1)break; for(int i=0;i<n;i++){ scanf("%d %d:%d:%d",&a[i].num,&x,&y,&z); a[i].no=i;//记录位置 a[i].sco=3600*x+60*y+z;//将时间换算成秒 sco[i]=100-(5-a[i].num)*10;//存储分数 } sort(a,a+n,cmp); for(int i=0;i<n;i++) { int t=a[i].num,tot=0,j=i; for(;a[i].num==t&&i<n;i++) tot++; i--; if(a[i].num==5||a[i].num==0)continue; if(tot>1) tot/=2; while(tot--) sco[a[j++].no]+=5;//前一半人加5分 } for(int i=0;i<n;i++) printf("%d\n",sco[i]); puts(""); } return 0; }