#include <stdio.h> #define MaxArr 100000 #define flag 1 void TestData(int i); void Input(int i); void Output(int i); int Judge1(int i,int j,int k); int Judge2(int i,int j,int k); struct Test{ int n; int m; int a[MaxArr]; int b[MaxArr]; int number[MaxArr];//排序 }test[10]; int main() { int t; scanf("%d",&t); int size = t; for(int i=0;i<t;i++){ Input(i); TestData(i); printf("\n"); } for(int i=0;i<size;i++) Output(i); return 0; } void exchange(int i,int j,int k){ int temp = test[i].number[j]; test[i].number[j] = test[i].number[k]; test[i].number[k] = temp; } void TestData(int i){ int select=0; for(int j=0;j<test[i].n-1;j++)//找前m个 for(int k=j+1;k<test[i].n;k++) if(Judge1(i,j,k)||Judge2(i,j,k)) exchange(i,j,k); } int Judge1(int i,int j,int k){//苹果多 if(test[i].a[j]<test[i].a[k]) return 1; else return 0; } int Judge2(int i,int j,int k){//苹果相同,梨多 if((test[i].a[j]==test[i].a[k])&&(test[i].b[j]<test[i].b[k])) return 1; else return 0; } void Input(int i){ scanf("%d %d",&test[i].n,&test[i].m); for(int j=0;j<test[i].n;j++){ scanf("%d %d",&test[i].a[j],&test[i].b[j]); test[i].number[j]=j+1; } } void Output(int i){ for(int j=0;j<test[i].m;j++) printf("%d ",test[i].number[j]); printf("\n"); } |
Double click to view unformatted code.