首页 > 其他 > 详细

HDU 1084 What Is Your Grade?

时间:2016-02-03 14:24:57      阅读:261      评论:0      收藏:0      [点我收藏+]

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.

思路:结构体存储数据,先根据分数排序,在每个分数段(除100)根据时间排序,时间在1/2之前的分数加5,再对原来的序号排序,输出。

输出格式:here is a blank line after each case.

附代码

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 struct Stu {
 7     int num;
 8     int sco;
 9     int tim;
10 };
11 
12 int cmp1(Stu s1,Stu s2) {
13     return s1.tim<s2.tim;
14 }
15 int cmp2(Stu s1,Stu s2) {
16     return s1.num<s2.num;
17 }
18 int cmp3(Stu s1,Stu s2) {
19     return s1.sco>s2.sco;
20 }
21 int main() {
22 
23     freopen("C:\\CODE\\in.txt", "r", stdin);
24     //freopen("C:\\CODE\\out.txt","w",stdout);
25     int n,d,m,s;
26     bool flg=false;
27     char ch[100];
28 
29     while(~scanf("%d",&n)&&n>=1) {
30         getchar();
31         int num[10]= {0};
32         struct Stu stu1[105];
33         for(int i=0; i<n; i++) {
34             gets(ch);
35             stu1[i].num=i+1;
36             stu1[i].sco=(ch[0]-0)*10+50;
37             d=(ch[2]-0)*10+(ch[3]-0);
38             m=(ch[5]-0)*10+(ch[6]-0);
39             s=(ch[8]-0)*10+(ch[9]-0);
40             stu1[i].tim=d*3600+m*60+s;
41             num[ch[0]-0]++;
42         }
43         sort(stu1,stu1+n,cmp3);//分数升序
44         int p=num[5];
45         for(int i=4; i>=1; i--) {
46             if(num[i]>=3)
47                 sort(stu1+p,stu1+p+num[i],cmp1);
48             for(int j=0; j<num[i]/2; j++) {
49                 stu1[p+j].sco+=5;
50             }
51             p+=num[i];
52         }
53 
54         sort(stu1,stu1+n,cmp2);
55 
56         flg=true;
57         for(int i=0; i<n; i++) {
58             printf("%d\n",stu1[i].sco);
59             stu1[i].num=0;
60             stu1[i].sco=0;
61             stu1[i].tim=0;
62         }
63         printf("\n");
64     }
65 
66     fclose(stdin);
67     return 0;
68 }

 

HDU 1084 What Is Your Grade?

原文:http://www.cnblogs.com/livelihao/p/5179513.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!