给定一个不含前导 0 的正整数 n 。现在s要对这个数字进行最多 k 次操作,每次操作可以交换这个数字中任意两个相邻的数位。
s希望在操作以后这个数字尽可能大,请你输出这个最大值。
本题为多组输入,第一行一个正整数 T 表示数据组数。
接下来 T 行,每行两个整数 n,k 分别表示最初的数字和最多操作次数。
对于每组数据,输出一行一个整数,表示对应的答案。
样例输入
4
1990 1
300 0
1034 2
9090000078001234 6
9190
300
3104
9907000008001234
对于 20% 的数据,保证 n≤100 。
对于另外 20% 的数据,保证 k=1 。
对于另外 20% 的数据,保证 n≤100000,k=2 。
对于 100% 的数据,保证 1≤n≤1018,0≤k≤100,1≤T≤1000 。
#include<iostream>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
string n;
int k=0;
cin>>n>>k;
for(int i=0;i<n.length();i++){
if(n[i]=='9') continue;
int ma=int(n[i]-48),p=i;
for(int j=i+1;j<=i+k;j++){
if(int(n[j]-48)>ma){
ma=int(n[j]-48);
p=j;
}
}
for(int j=p;j>i;j--){
swap(n[j],n[j-1]);
k--;
}
}
cout<<n<<endl;
}
return 0;
}