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 }
  • 相关阅读:
    网络安全分析
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1464 Function
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1014 Cantor表
    java实现 洛谷 P1540 机器
    java实现 洛谷 P1540 机器
  • 原文地址:https://www.cnblogs.com/coderJiebao/p/PAT1015.html
Copyright © 2011-2022 走看看