#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Person{ char id[10]; int virtue; int talent; }person; //数组较大,开在main函数里面会出错; person ps[100005]; person p1[100005]; person p2[100005]; person p3[100005]; person p4[100005]; int cmp(const void *atmp,const void *btmp){ person *a=(person *)atmp; person *b=(person *)btmp; if(a->virtue+a->talent!=b->virtue+b->talent){ return a->virtue+a->talent<b->virtue+b->talent; } else if(a->virtue!=b->virtue){ return a->virtue<b->virtue; } else{ return strcmp(a->id,b->id); } return 0; } int main(){ int i,j; int n,l,h; int cnt1,cnt2,cnt3,cnt4; scanf("%d %d %d",&n,&l,&h); cnt1=cnt2=cnt3=cnt4=0; for(i=0;i<n;i++){ scanf("%s %d %d",&ps[i].id,&ps[i].virtue,&ps[i].talent); if(ps[i].virtue<l||ps[i].talent<l){ continue; } else if(ps[i].virtue>=h&&ps[i].talent>=h){ p1[cnt1]=ps[i]; cnt1++; } else if(ps[i].virtue>=h&&ps[i].talent<h){ p2[cnt2]=ps[i]; cnt2++; } else if(ps[i].virtue<h&&ps[i].talent<h&&ps[i].virtue>=ps[i].talent){ p3[cnt3]=ps[i]; cnt3++; } else { p4[cnt4]=ps[i]; cnt4++; } } qsort(p1,cnt1,sizeof(person),cmp); qsort(p2,cnt2,sizeof(person),cmp); qsort(p3,cnt3,sizeof(person),cmp); qsort(p4,cnt4,sizeof(person),cmp); printf("%d\n",cnt1+cnt2+cnt3+cnt4); for(i=0;i<cnt1;i++){ printf("%s %d %d\n",p1[i].id,p1[i].virtue,p1[i].talent); } for(i=0;i<cnt2;i++){ printf("%s %d %d\n",p2[i].id,p2[i].virtue,p2[i].talent); } for(i=0;i<cnt3;i++){ printf("%s %d %d\n",p3[i].id,p3[i].virtue,p3[i].talent); } for(i=0;i<cnt4;i++){ printf("%s %d %d\n",p4[i].id,p4[i].virtue,p4[i].talent); } system("pause"); return 0; }