Решение задачи Алфавитное удаление с Codeforces

Без пояснения   Просмотров: 55


Задана строка s, состоящая из n строчных букв латинского алфавита. Поликарпу стало интересно, какой станет строка, если он удалит из s ровно k букв (k≤n). Для выполнения задуманного Поликарп применяет следующий алгоритм k раз:

если есть хотя бы одна буква 'a', удалить самое левое ее вхождение и завершить алгоритм, иначе перейти к следующему пункту;
если есть хотя бы одна буква 'b', удалить самое левое ее вхождение и завершить алгоритм, иначе перейти к следующему пункту;
...
удалить самое левое вхождение буквы 'z' и завершить алгоритм.
Таким образом, Поликарп k раз удалит ровно одну букву из строки. Следовательно, он удалит ровно k букв из строки. Каждый раз для определения удаляемой буквы он использует пункты описанного выше алгоритма.

Помогите Поликарпу найти получившуюся строку.

Код

#include<bits/stdc++.h>
using namespace std;
bool f[400001];
signed main(){
	string s;
	int n,k;
	cin>>n>>k;
	cin>>s;
	for(char c='a';c<='z';c++)
		for(int i=0;i<n;i++)
			if (s[i]==c&&k>0){
				k--;
				f[i]=1;
			}
	for(int i=0;i<n;i++)
		if(!f[i])
			cout<<s[i];
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться