Result: Accepted
Time: 69ms
Memory: 24616kB
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char num[10];
int a;
int b;
int sum;
}student;
int cmp(const void *a,const void *b){
if( ((*(student*)b).sum-(*(student*)a).sum)!=0){
return (*(student*)b).sum-(*(student*)a).sum;
}
else if(((*(student*)b).a-(*(student*)a).a)!=0){
return (*(student*)b).a-(*(student*)a).a;
}
else if(((*(student*)b).b-(*(student*)a).b)!=0){
return (*(student*)b).b-(*(student*)a).b;
}
else
return strcmp((*(student*)a).num,(*(student*)b).num);
}
int main(){
int n,l,h;
int num=0;
int x=0,y=0,z=0,s=0;
student stu[200000];
student stu1[200000];
student stu2[200000];
student stu3[200000];
student stu4[200000];
scanf("%d %d %d",&n,&l,&h);
for(int i=0;i<n;i++){
scanf("%s %d %d",stu[i].num,&stu[i].a,&stu[i].b);
stu[i].sum=stu[i].a+stu[i].b;
if(stu[i].a>=h&&stu[i].b>=h){
strcpy(stu1[x].num,stu[i].num);
stu1[x].a=stu[i].a;
stu1[x].b=stu[i].b;
stu1[x].sum=stu[i].sum;
num++;
x++;
}
else if(stu[i].a>=h&&stu[i].b>=l){
strcpy(stu2[y].num,stu[i].num);
stu2[y].a=stu[i].a;
stu2[y].b=stu[i].b;
stu2[y].sum=stu[i].sum;
num++;
y++;
}
else if(stu[i].a>=l&&stu[i].b>=l&&stu[i].a>=stu[i].b){
strcpy(stu3[z].num,stu[i].num);
stu3[z].a=stu[i].a;
stu3[z].b=stu[i].b;
stu3[z].sum=stu[i].sum;
num++;
z++;
}
else if(stu[i].a>=l&&stu[i].b>=l){
strcpy(stu4[s].num,stu[i].num);
stu4[s].a=stu[i].a;
stu4[s].b=stu[i].b;
stu4[s].sum=stu[i].sum;
num++;
s++;
}
}
printf("%d\n",num);
qsort(stu1,x,sizeof(student),cmp);
qsort(stu2,y,sizeof(student),cmp);
qsort(stu3,z,sizeof(student),cmp);
qsort(stu4,s,sizeof(student),cmp);
for(int i=0;i<x;i++){
printf("%s %d %d\n",stu1[i].num,stu1[i].a,stu1[i].b);
}
for(int i=0;i<y;i++){
printf("%s %d %d\n",stu2[i].num,stu2[i].a,stu2[i].b);
}
for(int i=0;i<z;i++){
printf("%s %d %d\n",stu3[i].num,stu3[i].a,stu3[i].b);
}
for(int i=0;i<s;i++){
printf("%s %d %d",stu4[i].num,stu4[i].a,stu4[i].b);
if(i!=s-1)
printf("\n");
}
}