栈
<pre name="code" class="cpp">#include <iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
using namespace std;
stack<char> st;
char ss[1001];
char ans[1001];
int i,j,k,l;
int n;
int main()
{
while(~scanf("%s",ss))
{
while(!st.empty())
{
st.pop();
}
scanf("%d",&n);
l=strlen(ss);
st.push(ss[0]);
int cnt=0;
for(i=1;i<l;i++)
{
if(cnt==n)
st.push(ss[i]);
else
{
if(st.top()<=ss[i])
st.push(ss[i]);
else if(st.top()>ss[i])
{
while(st.top()>ss[i])
{
st.pop();
cnt++;
if(st.empty())
break;
if(cnt==n)
break;
}
st.push(ss[i]);
}
}
}
k=0;
while(!st.empty())
{
ans[k++]=st.top();
st.pop();
}
int max=0;
while(cnt<n)
{
max=0;
for(i=0;i<k;i++)
{
if(ans[i]>max)
max=ans[i];
}
for(i=k-1;i>=0;i--)
{
if(ans[i]==max)
{
cnt++;
ans[i]=-1;
}
if(cnt==n)
break;
}
}
for(i=k-1;i>=0;i--)
{
if(ans[i]!='0')
break;
}
for(j=0;j<=i;j++)
if(ans[j]>'0')
break;
if(j<=i)
{
for(j=i;j>=0;j--)
if(ans[j]!=-1)
printf("%c",ans[j]);
printf("\n");
}
else
printf("0\n");
}
return 0;
}