What Is Your Grade? (sort)

来源:互联网 发布:windows 7 下载 iso 编辑:程序博客网 时间:2024/06/03 15:08

点击打开链接


“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
45 06:30:174 07:31:274 08:12:124 05:23:1315 06:30:17-1
Sample Output
100909095100

题意:如果做出五道题,给100分,其余的是前n/2个人给(5+x)分数,以此类推。

题解:sort的应用,利用下标进行标记,进行选择排序即可。

代码:

#include<iostream>#include<algorithm>#include<cstdio>using namespace std;struct P{int num;int time;int id;int score;}p[110];bool cmp(P a,P b){if(a.num!=b.num)return a.num>b.num;elsereturn a.time<b.time;}bool cmp1(P a,P b){return a.id<b.id;}int main(){int n;while(cin>>n&&n>0){int flag1,flag2,flag3,flag4;flag1=flag2=flag3=flag4=0;for(int i=0;i<n;i++){int h,m,s;cin>>p[i].num; if(p[i].num==4)flag1++;if(p[i].num==3)flag2++;if(p[i].num==2)flag3++;if(p[i].num==1)flag4++;scanf("%d:%d:%d",&h,&m,&s);p[i].time = h*3600 + m*60 + s;p[i].id=i;}sort(p,p+n,cmp);flag1/=2;flag2/=2;flag3/=2;flag4/=2;for(int i=0;i<n;i++){if(p[i].num==5)p[i].score=100;else if(p[i].num==4){if(flag1){p[i].score=95;flag1--;}elsep[i].score=90;}else if(p[i].num==3){if(flag2){p[i].score=85;flag2--;} elsep[i].score=80;}else if(p[i].num==2){if(flag3){p[i].score=75;flag3--;}elsep[i].score=70;}else if(p[i].num==1){if(flag4){p[i].score=65;flag4--;}elsep[i].score=60;}elsep[i].score=50;}sort(p,p+n,cmp1);for(int i=0;i<n;i++)cout<<p[i].score<<endl;cout<<endl;}}




原创粉丝点击