#include #include #include struct person{ int score; char name[30]; }; void addElement(struct person *PersonList,int score,char *name){ static int size = 1; PersonList = realloc(PersonList,size*sizeof(struct person)); PersonList[size-1]->score = score; strcpy(PersonList[size-1]->name ,name); size++; } int comp(const void *p1, const void *p2){ struct person* person1 = (struct person*)p1; struct person* person2 = (struct person*)p2; return strcmp(person1->name, person2->name); } int main(){ struct person PersonList=calloc(0,sizeof(struct person*)); char name[30]; int score=0; int c =0; while(scanf("%d %s",&score,name)!=EOF){ addElement(&PersonList,score,name); c++; } qsort(PersonList,c,sizeof(struct person),comp); int idex = 0; for(int i =0;iname,PersonList[i+1]->name)!=0||flag==0){ printf("%d %s\n",PersonList[i].score,PersonList[i].name); } } free(PersonList); return 0; }