分析:
把小数字前移 大的就删掉 单调栈 注意删前导 0 0 0 以及删不满 k k k位
CODE:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#define reg register
using namespace std;
typedef long long ll;
const int N=1e6+5;
int n,k,tot,f;
char s[N],ans[N];
stack<char> st;
int main()
{
scanf("%d%s%d",&n,s+1,&k);
if(n==k)
{
puts("0");
return 0;
}
for(int i=1;i<=n;i++)
{
while(!st.empty()&&k&&s[i]<st.top()) st.pop(),k--;
st.push(s[i]);
}
while(k--&&st.size()) st.pop();
while(!st.empty())
{
ans[++tot]=st.top();
st.pop();
}
for(int i=tot;i>=1;i--)
{
if(!f&&ans[i]=='0') continue;
putchar(ans[i]);
f=1;
}
if(!f) puts("0");
return 0;
}