这一题 唯一的粗心是还没看完题目就开始写了
总的来说 用一个vector数组来存储分类 然后排序 只要思路清晰又不粗心 就可以对
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<stack>
#include<iterator>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
using namespace std;
typedef struct node{
int ID;
int t;
int v;
int total;
}node;
bool cmp(node A,node B)
{
if(A.total<B.total)
return false;
else if(A.total==B.total)
{
if(A.v<B.v)
return false;
else if(A.v==B.v&&A.ID>B.ID)
return false;
}
return true;
}
int main()
{
int n,l,h,j;
node p[100000];
scanf("%d%d%d",&n,&l,&h);
j=0;
vector<node> s[4];
for(int i=0;i<n;i++)
{
scanf("%d%d%d",&p[j].ID,&p[j].v,&p[j].t);
p[j].total=p[j].v+p[j].t;
if(p[j].t>=l&&p[j].v>=l)
{
if(p[j].t>=h&&p[j].v>=h)
s[0].push_back(p[j]);
else if(p[j].t<h&&p[j].v>=h)
s[1].push_back(p[j]);
else if(p[j].v>=p[j].t&&p[j].v<h&&p[j].t<h)
s[2].push_back(p[j]);
else
s[3].push_back(p[j]);
j++;
}
}
printf("%d\n",j);
for(int i=0;i<4;i++)
sort(s[i].begin(),s[i].end(),cmp);
for(int i=0;i<4;i++)
{
int ssize=s[i].size();
for(j=0;j<ssize;j++)
printf("%d %d %d\n",s[i][j].ID,s[i][j].v,s[i][j].t);
}
return 0;
}