#include<stdio.h> int main(void) { int t; scanf("%d",&t); while(t--) { int a,b,m,n; //a是苹果,b是梨,在n个篮子中选m个 int apple[100000],li[100000],sum[100000]; int i,j,k,flag,temp,sumTest; scanf("%d%d",&n,&m); //n个篮子,选其中m个篮子 for(i=0; i<n; ++i) { scanf("%d%d",&a,&b); apple[i] = a; li[i] = b; sum[i] = a*10+b; //sum数组求权值 } //使sum数组前m个数有序排列 for(j=0; j<m; ++j) { flag = 0; for(k=n-1; k>j; --k) if(sum[k]>sum[k-1]) { temp = sum[k-1]; sum[k-1] = sum[k]; sum[k] = temp; flag = 1; } if(!flag) break; } //挑选出前m个权值最大的篮子 for(j=0; j<m; ++j) { for(k=0; k<n; ++k) { sumTest = apple[k]*10+li[k]; if(sumTest==sum[j]) { printf("%d ",k+1); break; } } } printf("\n"); } return 0; } |
Double click to view unformatted code.