PTA乙级 (*1015 德才论 (25分))

1015 德才论 (25分)

https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312

#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;
struct student{
	int number;
	int moral;
	int ability;
};
bool cmp(student a,student b)
{
	if(a.moral+a.ability!=b.moral+b.ability) return a.moral+a.ability>b.moral+b.ability;
	else{
		if(a.moral!=b.moral) return a.moral>b.moral;
		else return a.number<b.number;
	      }
}
int main()
{
	std::ios::sync_with_stdio(false);
	student t;
	vector<student> vec1,vec2,vec3,vec4;
	int N,L,H,m=0;
	cin>>N>>L>>H;
	for(int i=0;i<N;i++)
	{
		cin>>t.number>>t.moral>>t.ability;
		if(t.moral>=L&&t.ability>=L)
		{
			m++;
		        if(t.moral>=H&&t.ability>=H) vec1.push_back(t);
		        else if(t.moral>=H&&t.ability<H) vec2.push_back(t);
		        else if(t.moral<H&&t.ability<H&&t.moral>=t.ability) vec3.push_back(t);
		        else vec4.push_back(t); 
	         }
	}
	sort(vec1.begin(),vec1.end(),cmp);
	sort(vec2.begin(),vec2.end(),cmp);
	sort(vec3.begin(),vec3.end(),cmp);
	sort(vec4.begin(),vec4.end(),cmp);
	cout<<m<<"\n";
	for(int i=0;i<vec1.size();i++) cout<<vec1[i].number<<" "<<vec1[i].moral<<" "<<vec1[i].ability<<"\n";
	for(int i=0;i<vec2.size();i++) cout<<vec2[i].number<<" "<<vec2[i].moral<<" "<<vec2[i].ability<<"\n";
	for(int i=0;i<vec3.size();i++) cout<<vec3[i].number<<" "<<vec3[i].moral<<" "<<vec3[i].ability<<"\n";
	for(int i=0;i<vec4.size();i++) cout<<vec4[i].number<<" "<<vec4[i].moral<<" "<<vec4[i].ability<<"\n";
	return 0;
}

参考:https://blog.csdn.net/qq_37729102/article/details/81633082

posted @ 2020-02-03 17:23  yyer  阅读(174)  评论(0编辑  收藏  举报