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 分)的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级 1015 德才论 (25 分)

PAT——乙级1015/甲级1062:德才论

PAT1015 德才论 (25)(25 分)

[PAT乙级]德才论 (25)

[PAT Basic] 1015 德才论 (25 分)

PAT乙级真题之德才论(经典的多条件排序)