zoukankan      html  css  js  c++  java
  • CoderForces999C-Alphabetic Removals

    C. Alphabetic Removals
    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    You are given a string ss consisting of nn lowercase Latin letters. Polycarp wants to remove exactly kk characters (knk≤n) from the string ss. Polycarp uses the following algorithm kk times:

    • if there is at least one letter 'a', remove the leftmost occurrence and stop the algorithm, otherwise go to next item;
    • if there is at least one letter 'b', remove the leftmost occurrence and stop the algorithm, otherwise go to next item;
    • ...
    • remove the leftmost occurrence of the letter 'z' and stop the algorithm.

    This algorithm removes a single letter from the string. Polycarp performs this algorithm exactly kk times, thus removing exactly kk characters.

    Help Polycarp find the resulting string.

    Input

    The first line of input contains two integers nn and kk (1kn41051≤k≤n≤4⋅105) — the length of the string and the number of letters Polycarp will remove.

    The second line contains the string ss consisting of nn lowercase Latin letters.

    Output

    Print the string that will be obtained from ss after Polycarp removes exactly kk letters using the above algorithm kk times.

    If the resulting string is empty, print nothing. It is allowed to print nothing or an empty line (line break).

    Examples
    input
    Copy
    15 3
    cccaabababaccbc
    
    output
    Copy
    cccbbabaccbc
    
    input
    Copy
    15 9
    cccaabababaccbc
    
    output
    Copy
    cccccc
    
    input
    Copy
    1 1
    u
    
    output
    Copy

    AC代码为:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=4e5+10;
    struct Node{
        int id,temp;
        char c;
    } node[maxn];
    bool cmp1(Node a,Node b)
    {
        return a.c==b.c? a.id<b.id : a.c-'a'<b.c-'a';
    }
    bool cmp2(Node a,Node b)
    {
        return a.id<b.id;
    }
    int n,k;
    char s1[maxn];
    int main()
    {
        scanf("%d%d",&n,&k);
        scanf("%s",s1);
        int len=strlen(s1);
        for(int i=0;i<len;i++)
        {
            node[i].c=s1[i];
            node[i].id=i;
            node[i].temp=0;
        }
        sort(node,node+len,cmp1);
        for(int i=0;i<k;i++) node[i].temp=1;
        sort(node,node+len,cmp2);
        for(int i=0;i<len;i++)
        {
            if(node[i].temp==1) continue;
            else printf("%c",node[i].c); 
        }
        printf(" ");
        
        return 0;
    }






  • 相关阅读:
    学习认识Spring原理
    JavaScript
    JSP----九大内置对象
    人到底可以有怎样的意志力,人到底可能有怎样的发挥潜力? ----问自己
    将web项目打成war包部署在tomcat步骤
    微信企业公众号开发之回调模式
    eclipse/myeclipse 中的一些常用的快捷键
    mycelipse中关于编码的配置
    Ext学习系列(1)初识Ext
    AngularJs编写指令
  • 原文地址:https://www.cnblogs.com/csushl/p/9386537.html
Copyright © 2011-2022 走看看