#include<stdio.h> #include<stdlib.h> typedef struct{ int apple; int li; int index; }Fruit; /*int cmp(const void *_a,const void *_b){ Fruit* a=(Fruit*)_a; Fruit* b=(Fruit*)_b; if(a->apple==b->apple&&a->li==b->li){ if(a->index>b->index) return 1; else return -1; } if(a->apple==b->apple){ if(a->li>b->li) return -1; else return 1; } else{ if(a->apple>b->apple) return -1; else return 1; } }*/ int cmp(const void * a,const void * b) { Fruit *lanzi1=(Fruit *)a; Fruit *lanzi2=(Fruit *)b; int fruit1 = lanzi1->apple; int fruit2 = lanzi2->apple; if (fruit1==fruit2) { fruit1=lanzi1->li; fruit2=lanzi2->li; if (fruit1==fruit2) return lanzi1->index-lanzi2->index; } return fruit2-fruit1; } int main(void){ int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d %d",&n,&m); Fruit fru[n]; for(int i=0;i<n;i++){ scanf("%d %d",&fru[i].apple,&fru[i].li); fru[i].index=i+1; } qsort(fru,n,sizeof(fru[0]),cmp); for(int i=0;i<m;i++){ if(i!=m-i) printf("%d ",fru[i].index); else printf("%d",fru[i].index); } printf("\n"); } } |
Double click to view unformatted code.