0基础PAT乙级刷题之路(六)-1015 德才论 (25分)

这道题走了弯路.

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;

typedef struct{
    int num;
    int De;
    int Cai;
    int sum;
}student;

bool cmp(student a,student b){
    if(a.sum!=b.sum) return a.sum>b.sum;
    else if (a.sum==b.sum&&a.De!=b.De) return a.De>b.De;
    else if (a.sum==b.sum&&a.De==b.De) return a.num<b.num;
    else return 0;
}

int main(void){
    std::ios::sync_with_stdio(false);
    int N,L,H;
    int count=0;
    cin>>N>>L>>H;
    vector<student> stu(N);
    
    for(int i=0;i<N;i++){
        cin>>stu[i].num>>stu[i].De>>stu[i].Cai;
        stu[i].sum = stu[i].De+stu[i].Cai;
    }//输入
    sort(stu.begin(),stu.end(),cmp);//按cmp里面写的规则排序
    
    //我们已经得到正确的序列了,下面来求需要输出几个人,这里我们从后往前
    for(int i =N-1;i>=0;i--){
        if(stu[i].De<L||stu[i].Cai<L) {
            stu[i].sum = 0;
        }
    }
    for(int i=0;i<N;i++){
        if(stu[i].sum!=0) count++;
    }

    //此时count里面保存了需要输出的人的个数;
    cout<<count<<"\n";
    for(int i=0;i<N;i++)
        if(stu[i].De>=H && stu[i].Cai>=H && stu[i].De>=L && stu[i].Cai>=L&& stu[i].sum!=0)
            cout<<stu[i].num<<" "<<stu[i].De<<" "<<stu[i].Cai<<"\n";
    //以上是第一类
    for(int i=0;i<N;i++)
        if(stu[i].De>=H && stu[i].Cai<H && stu[i].De>=L && stu[i].Cai>=L && stu[i].sum!=0)
            cout<<stu[i].num<<" "<<stu[i].De<<" "<<stu[i].Cai<<"\n";
    //以上是第二类
    for(int i=0;i<N;i++)
        if(stu[i].De<H && stu[i].Cai<H && stu[i].De>=stu[i].Cai && stu[i].De>=L && stu[i].Cai>=L && stu[i].sum!=0)
            cout<<stu[i].num<<" "<<stu[i].De<<" "<<stu[i].Cai<<"\n";
    //以上第三类
    for(int i=0;i<N;i++)
        if(stu[i].De<H && stu[i].De<stu[i].Cai && stu[i].De>=L && stu[i].Cai>=L && stu[i].sum!=0)
            cout<<stu[i].num<<" "<<stu[i].De<<" "<<stu[i].Cai<<"\n";
    //以上第四类
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值