这题数量较大不能用cin cout(对于我的这种方法)。要用scanf printf。
只是用到了结构体,其他根据题目就可以了。
记得交题格式是c++;
#include<stdio.h>
#include<algorithm>
#define maxn 100010
using namespace std;
struct st{
int number;
int d,c,score;
}stu[maxn];
st c1[maxn],c2[maxn],c3[maxn],c4[maxn];
bool cmp(st a,st b)
{
if(a.score==b.score)
{
if(a.d==b.d)
return a.number<b.number;
return a.d>b.d;
}
else
return a.score>b.score;
}
int main()
{
int a1=0,a2=0,a3=0,a4=0;
int n,L,H;
scanf("%d %d %d",&n,&L,&H);
for(int i=0;i<n;i++)
{
scanf("%d %d %d",&stu[i].number,&stu[i].d,&stu[i].c);
if(stu[i].d<L&&stu[i].c<L)
continue;
stu[i].score=stu[i].d+stu[i].c;
if(stu[i].d>=H&&stu[i].c>=H)
c1[a1++]=stu[i];
else if(stu[i].d>=H&&stu[i].c<H&&stu[i].c>=L)
c2[a2++]=stu[i];
else if(stu[i].d>=stu[i].c&&stu[i].d>=L&&stu[i].d<H&&stu[i].c>=L&&stu[i].c<H)
c3[a3++]=stu[i];
else
{
if(stu[i].d>=L&&stu[i].c>=L)
c4[a4++]=stu[i];
}
}
sort(c1,c1+a1,cmp);
sort(c2,c2+a2,cmp);
sort(c3,c3+a3,cmp);
sort(c4,c4+a4,cmp);
printf("%d\n",a1+a2+a3+a4);;
for(int i=0;i<a1;i++)
printf("%d %d %d\n",c1[i].number,c1[i].d,c1[i].c);
for(int i=0;i<a2;i++)
printf("%d %d %d\n",c2[i].number,c2[i].d,c2[i].c);
for(int i=0;i<a3;i++)
printf("%d %d %d\n",c3[i].number,c3[i].d,c3[i].c);
for(int i=0;i<a4;i++)
printf("%d %d %d\n",c4[i].number,c4[i].d,c4[i].c);
return 0;
}