//排列 #include<stdio.h> #include<stdlib.h> #define MAX_NUM 1024 int an[MAX_NUM+10]; int MyCompare(const void *e1,const void *e2) { return *((int *)e1)-*((int *)e2); } int main() { int M; int n,k,i,j; scanf("%d",&M); for(int m=0;m<M;m++) { scanf("%d%d",&n,&k); for(i=1;i<=n;i++) scanf("%d",&an[i]); an[0]=100000; for(i=0;i<k;i++) { for(j=n;j>=1&&an[j-1]>an[j];j--); if(j>=1) { int nMinLarger=an[j]; int nMinIdx=j; for(int kk=j;kk<=n;kk++) { if(nMinLarger>an[kk]&&an[kk]>an[j-1]) { nMinLarger=an[kk]; nMinIdx=kk; } } an[nMinIdx]=an[j-1]; an[j-1]=nMinLarger; qsort(an+j,n-j+1,sizeof(int),MyCompare); } else { for(j=1;j<=n;j++) an[j]=j; } } for(j=1;j<=n;j++) printf("%d ",an[j]); printf(" "); } return 0; }