猫家的Oliver 2021-02-13 18:50 采纳率: 0%
浏览 22

<PAT 甲级题>1062 Talent and Virtue

#include<iostream>
#include<algorithm>

using namespace std;

struct student{
    int id;
    int v,t,sum;
    int type;
} stu[100010];

bool cmp(student a,student b){
    if(a.type!=b.type) return a.type<b.type;
    else if(a.sum!=b.sum) return a.sum>b.sum;
    else if(a.v!=b.v) return a.v>b.v;
    else  return a.id<b.id;
}

 int main(){
     int L,H,N;
     int count=0;
     cin>>N>>L>>H;
     
     int i=0;
     for(int k=0;k<N;k++){
         int v,t;
         int id;
         scanf("%d %d %d",&id,&v,&t);
         if(v<L||t<L){
             continue;
         }else{
             stu[i].v=v;    stu[i].t=t;    stu[i].id=id;
             stu[i].sum=v+t;
             if(stu[i].v>=H&&stu[i].t>=H) stu[i].type=1;
             else if(stu[i].v>=H&&stu[i].t<H) stu[i].type=2;
             else if(stu[i].v<H&&stu[i].t<H&&stu[i].v>stu[i].t) stu[i].type=3;
             else stu[i].type=4;
             i++;
         }
     }
     count=i;
     sort(stu,stu+count,cmp);
     cout<<count<<endl;
     for(int i=0;i<count;i++){
       cout<<stu[i].id<<' '<<stu[i].v<<' '<<stu[i].t<<endl;
    }
 }

 不知道是哪里出了错误。

是全部不及格的那些人也必须放入数组中吗?

  • 写回答

1条回答 默认 最新

  • ProfSnail 2021-02-13 20:26
    关注
    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    
    using namespace std;
    
    struct Student{
        char id[10];
        int de, cai, all;
        int cat; // category
        int getCat(int L, int H){
            if(de < L || cai < L){
                cat = 5;
            }
            else if(de >= H && cai >= H){
                cat = 1;
            }
            else if(de >= H && cai < H && cai >= L){
                cat = 2;
            }
            else if(de < H && cai <= de && cai >= L){
                cat = 3;
            }
            //else if(cai < H && cai > de && de >= L){
            else{
                cat = 4;
            }
            return cat;
        }
    }s[100010];
    
    // cat 1: de >= H && cai >= H;
    // cat 2: de >= H && cai < H && cai >= L;
    // cat 3: de < H && cai <= de && cai >= L;
    // cat 4: cai < H && cai > de && de >= L;
    // cat 5: de < L && cai < L;
    
    bool cmp(Student a, Student b){
        if(a.cat != b.cat) return a.cat < b.cat;
        else if(a.all != b.all) return a.all > b.all;
        else if(a.de != b.de) return a.de > b.de;
        else return strcmp(a.id, b.id) < 0;
    }
    
    int main(void)
    {
        int N, L, H, M = 0;
        scanf("%d %d %d", &N, &L, &H);
        for(int i = 0; i < N; i++){
            scanf("%s %d %d", s[i].id, &s[i].de, &s[i].cai);
            s[i].all = s[i].de + s[i].cai;
            if(s[i].getCat(L, H)==5){
                M++;
            }
        }
        sort(s, s+N, cmp);
        int hege = N - M;
        printf("%d\n", hege);
        for(int i = 0; i < hege; i++){
            printf("%s %d %d\n", s[i].id, s[i].de, s[i].cai);
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥30 计算机硬件实验报告寻代
  • ¥15 51单片机写代码,要求是图片上的要求,请大家积极参与,设计一个时钟,时间从12:00开始计时,液晶屏第一行显示time,第二行显示时间
  • ¥15 用C语言判断命题逻辑关系
  • ¥15 原子操作+O3编译,程序挂住
  • ¥15 使用STM32F103C6微控制器设计两个从0到F计数的一位数计数器(数字),同时,有一个控制按钮,可以选择哪个计数器工作:需要两个七段显示器和一个按钮。
  • ¥15 在yolo1到yolo11网络模型中,具体有哪些模型可以用作图像分类?
  • ¥15 AD9910输出波形向上偏移,波谷不为0V
  • ¥15 淘宝自动下单XPath自动点击插件无法点击特定<span>元素,如何解决?
  • ¥15 曙光1620-g30服务器安装硬盘后 看不到硬盘
  • ¥15 抖音直播广场scheme