360
Se consideră un cuvânt format numai din litere mici și un număr natural nenul K.
Cerința
Să se determine cuvântul minim lexicografic obținut prin eliminarea a exact K litere din cuvântul inițial.
Date de intrare
Programul citește de la tastatură numărul K, apoi cuvântul.
Date de ieșire
Programul va afișa pe ecran cuvântul rămas după eliminarea a exact K litere, minim lexicografic.
Restricții și precizări
3 ≤ lungimea cuvântului ≤ 1.000.000- Cuvântul este format numai din litere mici ale alfabetului englez.
1 ≤ K < lungimea cuvântului- Literele rămase după eliminare nu-și pot schimba ordinea în cuvânt.
Exemplu
Intrare
5 zyizxtnfo
Ieșire
info
#include <bits/stdc++.h>
using namespace std;
char s[1000001] , c[1000001];
int k , n;
int main()
{
cin >> k >> c;
n=1;
s[n]=c[0];
for(int i = 1 ; c[i] ; ++i)
{
while(n > 0 && c[i] < s[n] && k)
{
n--;
k--;
}
n++;
s[n]=c[i];
}
while(k)
{
n--;
k--;
}
for(int i = 1 ; i <= n ; ++i)
cout << s[i];
return 0;
}
Comentarii