PAT乙级 1015 德才论 (25 分)
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级 1015 德才论 (25 分)相关的知识,希望对你有一定的参考价值。
https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312
第一类 都过线了 总分排序
第二类 德过才不过 总分排序
第三类 都低于H 德大于等于才 总分排序
第四类 都低于H 总分排序
先总分排
总分相同 按德分排 德分相同按准考证号小到大
#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
int n,L,H;
struct student
{
int id;
int a,b,sum;
}stu[100005];
bool cmp(student a,student b)
{
if(a.sum==b.sum)
{
if(a.a==b.a)
return a.id<b.id;
else
return a.a>b.a;
}
else
return a.sum>b.sum;
}
int number;
vector<student>ve1,ve2,ve3,ve4;
int main(void)
{
cin>>n>>L>>H;
for(int i=0;i<n;i++)
{
cin>>stu[i].id>>stu[i].a>>stu[i].b;
stu[i].sum=stu[i].a+stu[i].b;
if(stu[i].a>=L&&stu[i].b>=L)
{
number++;
if(stu[i].a>=H&&stu[i].b>=H) ve1.push_back(stu[i]);
else if(stu[i].a>=H&&stu[i].b<H) ve2.push_back(stu[i]);
else if(stu[i].a<H&&stu[i].b<H&&stu[i].a>=stu[i].b) ve3.push_back(stu[i]);
else ve4.push_back(stu[i]);
}
}
cout<<number<<endl;
sort(ve1.begin(),ve1.end(),cmp);
sort(ve2.begin(),ve2.end(),cmp);
sort(ve3.begin(),ve3.end(),cmp);
sort(ve4.begin(),ve4.end(),cmp);
for(int i=0;i<ve1.size();i++) cout<<ve1[i].id<<" "<<ve1[i].a<<" "<<ve1[i].b<<endl;
for(int i=0;i<ve2.size();i++) cout<<ve2[i].id<<" "<<ve2[i].a<<" "<<ve2[i].b<<endl;
for(int i=0;i<ve3.size();i++) cout<<ve3[i].id<<" "<<ve3[i].a<<" "<<ve3[i].b<<endl;
for(int i=0;i<ve4.size();i++) cout<<ve4[i].id<<" "<<ve4[i].a<<" "<<ve4[i].b<<endl;
return 0;
}
以上是关于PAT乙级 1015 德才论 (25 分)的主要内容,如果未能解决你的问题,请参考以下文章