//为了做到题目的要求,只需要从第一位开始即可,找到能和第一位满足交换条件的就让其一步一步交换,把交换次数减掉即可
//其余的也是和第一位一样的.
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[100];
int m,i,max,j,k,t;
while(scanf("%s%d",a,&m)!=EOF)//因为第一个数非常大,也为了方便交换,所以存到字符串中。
{
int len=strlen(a);
if(m==0)//交换0次,就是原样输出
{
puts(a);
continue;//继续读取数据,不执行下面语句
}
for(i=0;i<len-1;i++)
{
max=a[i]; //初始化为当前值,当找到比当前值大的就可以交换
for(j=i+1;j<m+i+1&& j<len;j++)//// j<m+i+1 就是为了保证只要在这个范围内的最大数,就可以交换。j<len 为了避免超范围
if(max<a[j])
{
max=a[j];
t=j;
}
if(max>a[i])//不在上面的条件下,为了减少循环
{
for(k=t;k>i;k--) /////没必要一个一个的交换,直接每个元素往后移动,之后再把大的放前面就行了
a[k]=a[k-1];
a[i]=max;
m=m-t+i;
}
if(m==0)
break;
}
puts(a);
}
return 0;
}
///那感觉不好就评论一下.