贪心一下就好,
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>
#include <set>
#include <vector>
using namespace std;
char tm[100];
struct node
{
int x;
int num;
int value;
}nm[100];
int cmp(node a,node b)
{
if (a.x!=b.x)
return a.x>b.x;
else
return a.num<b.num;
}
int main()
{
int k,kk;
scanf("%s",tm+1);
scanf("%d",&kk);
int i,j;
int len=strlen(tm+1);
for (i=1;i<=len;i++)
{
if (kk<=0) break;
int ok=0;
for (j=i+1;j<=len;j++)
{
nm[++ok].x=tm[j]-'0';
nm[ok].num=ok;
}
sort(nm+1,nm+1+ok,cmp);
if (tm[i]-'0'>=nm[1].x) continue;
for (j=1;j<=ok;j++)
{
if (kk>=nm[j].num&& nm[j].x>tm[i]-'0')
{
for (k=nm[j].num+i;k>=i+1;k--)
swap(tm[k],tm[k-1]);
kk-=nm[j].num;
break;
}
if (kk<=0) break;
}
if (kk<=0) break;
}
printf("%s\n",tm+1);
return 0;
}