• HDU 1084 What Is Your Grade?


    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
    ",stu1[i].sco);
    59             stu1[i].num=0;
    60             stu1[i].sco=0;
    61             stu1[i].tim=0;
    62         }
    63         printf("
    ");
    64     }
    65 
    66     fclose(stdin);
    67     return 0;
    68 }
    ---------------- 人们生成的最美好的岁月其实就是最痛苦的时候,只是事后回忆起来的时候才那么幸福。
  • 相关阅读:
    (转)Web自动化测试中的接口测试
    Redis在.net中的应用学习
    Redis学习第八课:Redis高级实用特性(一)
    Redis学习第七课:键值命令和服务器命令
    Redis学习第六课:Redis ZSet类型及操作
    先验概率 vs 后验概率
    cout格式化输出
    python练习linux下创建路径
    把“苹果中国首发”视为扬眉吐气是自卑的表现
    字符串处理算法(三)按指定位置交换字符串两部分的位置
  • 原文地址:https://www.cnblogs.com/livelihao/p/5179513.html
Copyright © 2020-2023  润新知