记录编号 69190 评测结果 AAAAAAAAAA
题目名称 [Clover S1] 数字游戏 最终得分 100
用户昵称 GravatarEzoi_XY 是否通过 通过
代码语言 C++ 运行时间 0.185 s
提交时间 2013-09-11 19:12:51 内存使用 24.13 MiB
显示代码纯文本
#include <stdio.h>
#include <string.h>
#define MIN(a,b) ((a)<(b)?(a):(b))
#define N 5000010
char s[N];
int d[N],top;
int main()
{
    int i,j,k,len,cnt,f;
    int t,min,max,mid;
freopen("gamec.in","r",stdin);
freopen("gamec.out","w",stdout);
    while(~scanf("%s%d",&s[1],&k))
    {
        s[0]=-1,top=0;
        d[top++]=0;
        len=strlen(s);
        for(i=1,cnt=0;cnt<k&&i<=len;)
        {
            if(top==1||s[i]>=s[d[top-1]])
            {
                d[top++]=i++;
                continue;
            }
            else
            {
                min=0,max=top-1;
                while(min+1!=max)
                {
                    mid=(min+max)>>1;
                    if(s[i]<s[d[min]])  max=mid;
                    else    min=mid;
                }
                t=MIN(k-cnt,top-max);
                top-=t,cnt+=t;
            }
        }
        f=1;
        for(j=1;j<top&&s[d[j]]=='0';j++);
        for(;j<top;j++)  printf("%c",s[d[j]]),f=0;
        if(f)   for(;i<len&&s[i]=='0';i++);
        for(;i<len;i++)    printf("%c",s[i]),f=0;
        if(f)   printf("0");
        printf("\n");
    }
    return 0;
}