原题链接
总结:
该题是分类排序,可以利用sort()的第三个参数,进行排序
本题学会了vector 的使用
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct node
{
long long id;int de,cai;
};
int cmp(struct node a,struct node b)
{
if((a.de+a.cai)!=(b.de+b.cai)){
return (a.de+a.cai)>(b.de+b.cai);}else if(a.de != b.de){
return a.de>b.de;}else{
return a.id<b.id;}
}
int main()
{
int N,L,H;cin>>N>>L>>H;vector<node> v[4];struct node tem;int total = N;for(int i=0;i<N;i++){
cin>>tem.id>>tem.de>>tem.cai;if(tem.de>=L&&tem.cai>=L)//错误处,L为输入的数,而不是一成不变的60{
if(tem.de>=H&&tem.cai>=H){
v[0].push_back(tem);}else if(tem.de>=H&&tem.cai<H){
v[1].push_back(tem);}else if(tem.de<H&&tem.cai<H&&tem.de>=tem.cai){
v[2].push_back(tem);}else{
v[3].push_back(tem);}}elsetotal--;}cout<<total<<"\n";for(int i=0;i<4;i++){
sort(v[i].begin(),v[i].end(),cmp);for(int j=0;j<v[i].size();j++){
cout<<v[i][j].id<<" "<<v[i][j].de<<" "<<v[i][j].cai<<"\n";}}return 0;
}