版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sugarbliss/article/details/85080422
题目链接:http://codeforces.com/contest/999/problem/C
题意:给了n和k,然后输入一个长度为n的字符串,然后有k次操作,从字符串中依次按abcd...的顺序删除字符,最后输出k次操作后的字符串。
思路:sort排序后的前k个字符就是我们要删除的字符,用map标记要删除的字符,直接输出就好了。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define read(x) scanf("%d",&x)
const int maxn = 1e6+7;
map<char,int>mp;
int main()
{
int n, k; read(n); read(k);
string s, t; cin >> s; t = s;
sort(t.begin(),t.end());
for(int i = 0; i < k; i++) mp[t[i]]++;
for(int i = 0; i < n; i++)
{
if(!mp[s[i]]) cout << s[i];
else mp[s[i]]--;
}
}