zoukankan      html  css  js  c++  java
  • 1015. 德才论

     题目截图:

    思路:

      可以设置 type 变量,先按 type 排序。然后就是按要求自定义 cmp 函数即可。

    代码:

     1 /*
     2     1015. 德才论
     3 */
     4 
     5 #include <stdio.h>
     6 #include <string.h>
     7 #include <math.h>
     8 #include <stdlib.h>
     9 #include <time.h>
    10 
    11 #define maxn 100001
    12 typedef struct {
    13     int id;                // 准考证号 
    14     int de, cai;        // 德分,才分 
    15     int sum;            // 总分 
    16     int type;            // 类别 
    17 } student;
    18 student s[maxn];
    19 int cnt=0;                // 记录有资格的考生数量 
    20 
    21 // 自定义排序 
    22 int cmp(const void* a, const void* b) {
    23     student* c = (student*)a;
    24     student* d = (student*)b;
    25     if(c->type == d->type) {            // 按类别升序 
    26         if(c->sum == d->sum) {            // 按总分降序 
    27             if(c->de == d->de) {        // 按德分降序 
    28                 return c->id-d->id;        // 按准考证号升序 
    29             } else {
    30                 return d->de-c->de;
    31             }    
    32         } else {
    33             return d->sum-c->sum;
    34         }
    35     } else {
    36         return c->type-d->type;
    37     }
    38 }
    39 
    40 int main() {
    41     int N, L, H, i;
    42     int a, b, c, d;                // 准考证号,德分,才分,类别 
    43     scanf("%d %d %d", &N, &L, &H);
    44     for(i=0; i<N; ++i) {
    45         scanf("%d %d %d", &a, &b, &c);
    46         if(b>=L && c>=L) {
    47             s[cnt].id = a;
    48             s[cnt].de = b;
    49             s[cnt].cai = c;
    50             s[cnt].sum = b+c;
    51             if(b>=H && c>=H) {            // 类别1 
    52                 d = 1;
    53             } else if(c<H && b>=H) {    // 类别2
    54                 d = 2;
    55             } else if(c<H && b<=H && b>=c) {    // 类别3
    56                 d = 3;
    57             } else {                    // 类别4
    58                 d = 4;
    59             }
    60             s[cnt++].type = d;
    61         }
    62     }
    63     qsort(s, cnt, sizeof(student), cmp);    // 排序
    64     // 按格式输出 
    65     printf("%d
    ", cnt);
    66     for(i=0; i<cnt; ++i) {
    67         printf("%d %d %d", s[i].id, s[i].de, s[i].cai);
    68         if(i != cnt-1) {
    69             printf("
    ");
    70         }
    71     }
    72 
    73     return 0;
    74 }
  • 相关阅读:
    装饰器和迭代器
    闭包函数
    函数对象
    Python函数
    函数的基本使用
    文件处理
    量化策略
    Android--生命周期
    算法转AI平台工程师记录-0
    python3.6安装
  • 原文地址:https://www.cnblogs.com/coderJiebao/p/PAT1015.html
Copyright © 2011-2022 走看看