What Is Your Grade? HDU
来源:互联网 发布:逆战天梯卡数据不扣分 编辑:程序博客网 时间:2024/05/22 06:11
“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
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
题解:直接看代码。
代码如下:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;struct node{ int Pr; //存储解题数。 char Ti[10]; //存储时间。 int lo; //存储初始位置。 int sc; //存储得分。}a[105];bool cmp1(node w,node m){ if(w.Pr==m.Pr) return strcmp(w.Ti,m.Ti)<0; else return w.Pr>m.Pr;}bool cmp2(node w,node m){ return w.lo<m.lo;}int main(){ int n; while(scanf("%d",&n)&&n>=0){ for(int i=0;i<n;i++){ scanf("%d %s",&a[i].Pr,a[i].Ti); a[i].lo=i; //记录初始位置。 } sort(a,a+n,cmp1); //按解题数目从高到低排列,相同解题数按时间由小到大排列。 int num5=0,num4=0,num3=0,num2=0,num1=0; int sum5=0,sum4=0,sum3=0,sum2=0,sum1=0; for(int i=0;i<n;i++){ //统计各解题数各有多少人。 if(a[i].Pr==5) num5++; if(a[i].Pr==4) num4++; if(a[i].Pr==3) num3++; if(a[i].Pr==2) num2++; if(a[i].Pr==1) num1++; } sum5=num5,sum4=sum5+num4,sum3=sum4+num3,sum2=sum3+num2,sum1=sum2+num1; //根据规则,为所有人打分。 for(int i=0;i<num5;i++) a[i].sc=100; for(int i=sum5;i<sum4;i++) { if(i<(sum5+sum4)/2) a[i].sc=95; else a[i].sc=90; } for(int i=sum4;i<sum3;i++) { if(i<(sum4+sum3)/2) a[i].sc=85; else a[i].sc=80; } for(int i=sum3;i<sum2;i++) { if(i<(sum3+sum2)/2) a[i].sc=75; else a[i].sc=70; } for(int i=sum2;i<sum1;i++) { if(i<(sum2+sum1)/2) a[i].sc=65; else a[i].sc=60; } for(int i=sum1;i<n;i++) a[i].sc=50; sort(a,a+n,cmp2); //按原先的顺序输出结果。 for(int i=0;i<n;i++) printf("%d\n",a[i].sc); printf("\n"); } return 0;}
- What Is Your Grade? HDU
- hdu 1084 What Is Your Grade?
- HDU 1084 What Is Your Grade?
- hdu 1084 What Is Your Grade?
- HDU 1084 What Is Your Grade?
- hdu 1084 What Is Your Grade?
- hdu 1084 What Is Your Grade?
- hdu 1084 What Is Your Grade?
- HDU 1.3.4 What Is Your Grade?
- hdu---1084What Is Your Grade?
- HDU 1084 What Is Your Grade?
- HDU ACM 1084 What Is Your Grade?
- hdu 1084 What Is Your Grade(水题)
- HDU ACM 1084 What Is Your Grade?
- HDU 1.3.4 What Is Your Grade?
- HDU 1084 What Is Your Grade?
- HDU 1084 What Is Your Grade
- HDU 1084 What Is Your Grade?
- java学习_小程序(四线程断点网络资源下载,即时进度反馈)
- java求解一给定数字的二进制表达中的1的个数
- ctrl+v粘贴快捷键突然不能使用的原因及解决方案
- Linux学习总结(37)——CentOS7下Firewall防火墙配置用法详解
- Square HDU
- What Is Your Grade? HDU
- PHP 正则表达式抓取网页内容。
- 文章标题
- shiro
- 数据结构——栈
- HackerRank leonardo-and-lucky-numbers —— 模线性方程的通解
- ajax+jason=http 406
- 【C#】真分页功能的实现
- 暑期集训—day3—hdu 4506, 2855, 1097-快速幂与矩阵快速幂