hduoj1084!【水题】
来源:互联网 发布:机房网络布线方案 编辑:程序博客网 时间:2024/05/19 14:38
/*What Is Your Grade?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8551 Accepted Submission(s): 2629Problem 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!InputInput 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.OutputOutput the scores of N students in N lines for each case, and there is a blank line after each case.Sample Input45 06:30:174 07:31:274 08:12:124 05:23:1315 06:30:17-1 Sample Output100909095100Authorlcy*/#include<stdio.h>#include<stdlib.h>struct students{int num;int time;int score;int num2;}stu[110];int cmp(const void *a , const void *b)//按照做题数从大到小,若相等则按时间数从小到大 {struct students *c = (struct students *)a;struct students *d = (struct students *)b;if((*(struct students *)c).num != (*(struct students *)d).num)return (*(struct students *)d).num - (*(struct students *)c).num;elsereturn (*(struct students *)c).time - (*(struct students *)d).time;}int cmp1(const void*a, const void *b)//返回原序列 {return (*(struct students *)a).num2 - (*(struct students*)b).num2;}int main(){int n, i, j, k, l;while(scanf("%d", &n) != EOF){if(n == -1)break;for(i = 0; i < n; i++){scanf("%d%d:%d:%d", &stu[i].num, &j, &k, &l);stu[i].time = j * 3600 + k * 60 + l;stu[i].num2 = i+1;}qsort(stu, n, sizeof(stu[0]), cmp);for(i = 0; i < n; i++){if(stu[i].num == 5)stu[i].score = 100;else if(stu[i].num == 4)stu[i].score = 90;else if(stu[i].num == 3)stu[i].score = 80;else if(stu[i].num == 2)stu[i].score = 70;else if(stu[i].num == 1)stu[i].score = 60;else stu[i].score = 50;}for(i = 0; i < n; i++)if(stu[i].score == 90){for(j = i; j <= n; j++)if(stu[j].score != 90){for(k = i; k < i + (j-i)/2; k++)stu[k].score = 95;break;}break;}for(i = 0; i < n; i++)if(stu[i].score == 80){for(j = i; j <= n; j++)if(stu[j].score != 80){for(k = i; k < i + (j-i)/2; k++)stu[k].score = 85;break;}break;}for(i = 0; i < n; i++)if(stu[i].score == 70){for(j = i; j <= n; j++)if(stu[j].score != 70){for(k = i; k < i + (j-i)/2; k++)stu[k].score = 75;break;}break;}for(i = 0; i < n; i++)if(stu[i].score == 60){for(j = i; j <= n; j++)if(stu[j].score != 60){for(k = i; k < i + (j-i)/2; k++)stu[k].score = 65;break;}break;}qsort(stu, n, sizeof(stu[0]), cmp1);for(i = 0 ; i < n; i++)printf("%d\n", stu[i].score);printf("\n");}return 0;}
没什么特别的,就是结构体的排序。
唯一注意的是此题在杭电上,做题数只有一个人的时候,x0和x5都是对的。
0 0
- hduoj1084!【水题】
- 水题
- 水题
- 水题
- 水题
- 【水题】
- 水题
- 水题:
- 水题
- 水题~
- 水题
- 水题
- 水题
- 水题
- 水题
- 水题
- 【水题】
- 水题
- BUPT Summer Journey #test8 D
- 免费天气预报接口API以及全国所有地区代码!!
- datasheet中不是很明白的英文句子
- Hadoop管理员的十个最佳实践
- JQuery中弹出层位置设置
- hduoj1084!【水题】
- informix数据库操作
- Metasploit数据库问题汇总
- js验证码
- 学英语尽量不要从背词汇表开始
- 【设计模式】桥接模式
- ios--检测用户截屏, 并获取所截图片
- BUPT Summer Journey #test8 E
- 11g的延迟段功能