#include<stdio.h> #include<stdlib.h> typedef struct lanzi{ int id; int apple; int pear; }lanzi; int cmp(const void * a,const void * b) { struct lanzi *lanzi1=(struct lanzi *)a; struct lanzi *lanzi2=(struct lanzi *)b; int fruit1 = lanzi1->apple; int fruit2 = lanzi2->apple; if (fruit1==fruit2) { fruit1=lanzi1->pear; fruit2=lanzi2->pear; if (fruit1==fruit2) return lanzi1->id-lanzi2->id; } return fruit2-fruit1; } int main(){ int t; int n,m; lanzi s[100000]; scanf("%d",&t); while(t--){ scanf("%d %d",&n,&m); for(int i=0;i<n;i++){ s[i].id=i+1; //序号从一开始 scanf("%d %d",&s[i].apple,&s[i].pear); } qsort(s,n,sizeof(s[0]),cmp); //快速排序 /*for(int i=0;i<n;i++) printf("%d %d %d\n",s[i].id,s[i].apple,s[i].pear);*/ for(int i=0;i<m-1;i++) printf("%d ",s[i].id); printf("%d\n",s[m-1].id); } } |
Double click to view unformatted code.