原题链接
总结:
该题是分类排序,可以利用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);
}
}
else
total--;
}
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;
}