#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main(){
string s,ans;
int k;
cin>>s>>k;
stack<char>q;
int cnt=s.size()-k;
for(int i=0;i<s.size();i++){
int p,mi=10000;
for(int j=i;j<=s.size()-cnt;j++){
if(mi>s[j]){
mi=s[j];
p=j;
}
}
i=p;
cnt--;
ans+=s[p];
}
int f=1;
for(int i=0;i<ans.size();i++){
if(ans[i]=='0'&&f==1&&i<ans.size()-1)continue;
else {
f=0;
cout<<ans[i];
}
}
}
4114. 垃圾桶 - AcWing题库(cin会超时)
#include<iostream>
#include<string>
#include<stack>
#include<cstring>
using namespace std;
const int N=500005;
int cnt=0;
int l[N],r[N];
char s[N];
void solve(){
cnt++;
int n;
scanf("%d%s",&n,s);
int f=1;
int p=0;
for(int i=0;i<n;i++){
l[i]=0;
r[i]=0;
if(s[i]=='1')f=0;
if(f==1)l[i]=N+100;
else {
if(s[i]=='1')p=0;
else p++;
l[i]=p;
}
}
p=0,f=1;
for(int i=n-1;i>=0;i--){
if(s[i]=='1')f=0;
if(f==1)r[i]=N+10;
else {
if(s[i]=='1')p=0;
else p++;
r[i]=p;
}
}
long long ans=0;
for(int i=0;i<n;i++){
ans+=min(l[i],r[i]);
}
printf("Case #%d: %lld\n",cnt,ans);
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}