# PBinfo #2645 – minlex – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

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

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
#define nmax 1000005
using namespace std;
char a[nmax];
int k;
char s[nmax];
int main()
{
    int i, top;
    char x;
    cin >> k;
    cin >> (s + 1);
    a[0] = 'A';
    top = 0;
    for (i = 1; s[i] && k > 0; ++i)
    {
        x = s[i];
        while (k > 0 && a[top] > x)
        {
            k--;
            top--;
        }
        a[++top] = x;
    }
    for( ; s[i]; i++)
        a[++top] = s[i];
    while (k > 0)
    {
        k--;
        top--;
    }
    a[top + 1] = 0;
    cout << (a + 1) << "\n";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2645)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2645/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2645/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
