hdu---1084What Is Your Grade?

来源:互联网 发布:专业淘宝拍摄 编辑:程序博客网 时间:2024/05/01 06:18

What Is Your Grade?

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7589    Accepted Submission(s): 2345


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
 
 
 
AC代码:
/*    水题一枚,不卡时,完全模拟求出结果即可; 这里作为一次代码练习。    题目中注意两个细节:    一个是每个样例后都有一个空行;    另一个是当只有一个人做出4题时,是95分,不是90分,这点题目描述没说清楚。    细节很重要,这两个点也卡了我20分钟,还是比较浪费时间的。*/#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#define N 110typedef struct LNode{    int num;    int t;    int a,b,c;    int sorce;}LNode;LNode f[N];void cmd(LNode f[N],int n);int main(){    int i,j,k=0;int flag=0;    freopen("in.txt","r",stdin);    int n,m;    while(scanf("%d",&n)){        if(n==-1) break;        for(i=0;i<n;i++){            scanf("%d %d:%d:%d",&f[i].t,&f[i].a,&f[i].b,&f[i].c);            f[i].num=i+1;//一开始的顺序!        }        cmd(f,n);//排序        for(i=0;i<n;i++)            if(f[i].t==5) f[i].sorce=100;            else break;        j=i; //第j-1个为做对4题;        m=4; int fen=90;        while(m){            int num=0;            for(i=j;i<n;i++){                if(f[i].t==m) num++;                else break;            }            int kk=i;            k=num/2;  //k个+5分的;            if(num==1) k=1;            for(i=j;i<j+num;i++){                if(k){                    f[i].sorce=fen+5;                    k--;                }                else f[i].sorce=fen;            }            j=kk;            fen=fen-10;            m--;        }//前面5-1的统计完毕!  下面统计没做出题目的;        for(i=j;i<n;i++)            f[i].sorce=50;        LNode p;        for(i=0;i<n;i++)            for(j=0;j<n-i-1;j++){                if(f[j].num>f[j+1].num){                    p=f[j];f[j]=f[j+1];f[j+1]=p;                }            }        for(i=0;i<n;i++)            printf("%d\n",f[i].sorce);        printf("\n");    }    return 0;}void cmd(LNode f[N],int n){    int i,j,k;LNode m;    for(i=0;i<n;i++)        for(j=0;j<n-i-1;j++)            if(f[j].t<f[j+1].t){                m=f[j];f[j]=f[j+1];f[j+1]=m;            }            else if(f[j].t==f[j+1].t){                if(f[j].a>f[j+1].a){                    m=f[j];f[j]=f[j+1];f[j+1]=m;                }                else if(f[j].a==f[j+1].a){                    if(f[j].b>f[j+1].b){                        m=f[j];f[j]=f[j+1];f[j+1]=m;                    }                    else if(f[j].b==f[j+1].b){                        if(f[j].c>f[j+1].c){                            m=f[j];f[j]=f[j+1];f[j+1]=m;                        }                    }                }            }}

 

0 0
原创粉丝点击