HDU 1084 What Is Your Grade? (模拟题)

来源:互联网 发布:淘宝交电费显示缴费中 编辑:程序博客网 时间:2024/05/29 19:55

题意:

ac 5题,100分

ac 4题,排名前50% 95分,其余 90分

。。。

。。。

。。。

。。。

ac 0题,50分


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

Sample Output
100909095100
 

Author
lcy
 

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;struct node{int index;int score;int ac;} a[111];bool cmp(node x,node y){if(x.ac>y.ac) return true;if(x.ac==y.ac && x.score<y.score) return true;return false;}int ans[111],num[111];int main(){int n,i,j,ac,h,m,s;char ch;while(cin>>n) {if(n==-1) break;memset(ans,0,sizeof(ans));memset(a,0,sizeof(a));for(i=1;i<=n;i++) {cin>>ac>>h>>ch>>m>>ch>>s;a[i].index=i;a[i].ac=ac;a[i].score=s+60*m+60*60*h;num[ac]++;}for(i=1;i<=5;i++) {num[i]/=2;num[i]=max(num[i],1);}sort(a+1,a+1+n,cmp);for(i=1;i<=n;i++) {if(a[i].ac==5) ans[a[i].index]=100;else if(a[i].ac==4) {if(num[a[i].ac]) {ans[a[i].index]=95;num[a[i].ac]--;}else ans[a[i].index]=90;}else if(a[i].ac==3) {if(num[a[i].ac]) {ans[a[i].index]=85;num[a[i].ac]--;}else ans[a[i].index]=80;}else if(a[i].ac==2) {if(num[a[i].ac]) {ans[a[i].index]=75;num[a[i].ac]--;}else ans[a[i].index]=70;}else if(a[i].ac==1) {if(num[a[i].ac]) {ans[a[i].index]=65;num[a[i].ac]--;}else ans[a[i].index]=60;}else ans[a[i].index]=50;}for(i=1;i<=n;i++) cout<<ans[i]<<endl;cout<<endl;}return 0;}


0 0