2645 - minlex

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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.

Exemplul 1:

Intrare
5 zyizxtnfo
Ieșire
Datele de intrare corespund restrictiilor impuse
info

Exemplul 2:

Intrare
0
Ieșire
Datele de intrare nu corespund restrictiilor impuse

Rezolvare

def validare(litera_k, word):  # functia de validare a datelor de intrare
    if 1 > litera_k or litera_k >= len(word) or len(word) > 1000000:
        raise ValueError
    if not word.islower():
        raise ValueError
    print("Datele de intrare corespund restrictiilor impuse\n")


def elimina_litere(litera_k, word):  # functia de rezolvare
    stiva = []
    for litera in word:
        while litera_k > 0 and stiva and stiva[-1] > litera:
            stiva.pop()
            litera_k -= 1
        stiva.append(litera)
    while litera_k > 0:
        stiva.pop()
        litera_k -= 1
    return ''.join(stiva)


if __name__ == '__main__':
    try:
        k, cuvant = input("Introduceți numărul K și cuvântul, separate printr-un spațiu: ").split()
        k = int(k)
        validare(k, cuvant)
        rezultat = elimina_litere(k, cuvant)
        print(str(rezultat) + '\n')
    except ValueError:
        print("Datele de intrare nu corespund restrictiilor impuse")
    except IndexError:
        print("Datele de intrare nu corespund restrictiilor impuse")