uva 11491 Erasing and Winning 奖品的价值(贪心)

    Juliano is a fan of the TV show Erasing and Winning, where participants are selected in a draw andreceive money for taking part in the show.

    In the show, the presenter writes a number of N digits in a board. The participant must then eraseexactly D digits from the number in the board; the number formed by the remaining digits is the valueof the money prize for the participant.

    Juliano was at last selected to take part in the show, and asked you to write a program that, giventhe number the presenter wrote in the board, and the number of digits Juliano must erase, determinesthe highest value of the prize he can win.

Input

    The input contains several test cases. The first line of a test case contains two integers N and D(1 ≤ D < N ≤ 105) indicating respectively the number of digits of the number the presenter wrotein the board and the number of digits that must be erased. The next line contains the number thepresenter wrote; the number does not start with a zero.

    The end of input is indicated by a line containing only two zeros, separated by a space.

Output

     For each test case in the input your program must produce one single line in the output, containingthe highest prize Juliano can win.

Sample Input

4 2

3759

6 3

123123

7 4

1000000

0 0

Sample Output

79

323

100


#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
char a[100010];
int main()
{
    //freopen("outD.txt","w",stdout);
    int n,d;
    while(cin>>n>>d&&n+d)
    {
        memset(a,0,sizeof(a));
        int k=0;
        char c;
        for(int i=0;i<n;i++)
        {
            cin>>c;
            while(k>0&&c>a[k]&&k>i-d)k--;
            if(k+d<n) a[++k]=c;
        }
        a[++k]='\0';
        cout<<(a+1)<<endl;
    }
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值