Fişierul intrare/ieşire: | tdeque.in, tdeque.out | Sursă | FMI No Stress 5 |
Autor | Teodor Plop | Adăugată de | |
Timp execuţie pe test | 0.05 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
TDeque
Se dă o permutare de ordin N. Aveti la dispoziţie o structură de date care poartă numele de TDeque şi permite următoarele operaţii:
- 1. pushNext, care adaugă în capătul din dreapta al structurii următorul element din permutare, dacă acesta există.
- 2. frontToBack, care mută elementul din capătul din dreapta al structurii în capătul din stânga.
- 3. backToFront, care mută elementul din capătul din stânga al structurii în capătul din dreapta.
Se doreşte sortarea crescătoare a elementelor din permutarea dată, folosind structura de date prezentată mai sus.
De exemplu, dacă avem permutarea 1 3 2 5 4, o modalitate de a sorta această permutare este aplicarea următoarelor operaţii:
- 0. Iniţial, structura este goală: ()
- 1. pushNext, structura devine: (1)
- 2. pushNext, structura devine: (1, 3)
- 3. frontToBack, structura devine: (3, 1)
- 4. pushNext, structura devine: (3, 1, 2)
- 5. backToFront, structura devine: (1, 2, 3)
- 6. pushNext, structura devine: (1, 2, 3, 5)
- 7. fronToBack, structura devine: (5, 1, 2, 3)
- 8. pushNext, structura devine: (5, 1, 2, 3, 4)
- 9. backToFront, structura devine: (1, 2, 3, 4, 5)
Sa se afişeze numărul minim de operaţii necesare pentru a sorta permutarea precum şi operaţiile care trebuie efectuate.
Date de intrare
Fişierul de intrare tdeque.in conţine pe prima linie numărul natural N, iar pe cea de-a doua linie N numere naturale distincte cu valori între 1 şi N, reprezentând permutarea de ordin N din enunţul problemei.
Date de ieşire
În fişierul de ieşire tdeque.out se va găsi pe prima linie un număr M, reprezentând numărul de operaţii efectuate pentru a sorta permutarea. Pe cea de-a doua linie se vor găsi exact M caractere, reprezentând operaţiile efectuate. Al i-lea caracter va fi 1 dacă operaţia i este de tip pushNext, 2 daca operaţia este de tip frontToBack sau 3 dacă este de tip backToFront.
Restricţii
- 1 ≤ N ≤ 1.000
- Veţi primi 50% din punctaj dacă soluţia voastră este corectă iar numărul de operaţii efectuate este ≤ 1.000.000
- Veţi primi încă 50% din punctaj dacă soluţia voastră este corectă iar numărul de operaţii efectuate este minimul posibil pentru acele date de intrare.
Exemplu
tdeque.in | tdeque.out |
---|---|
3 1 2 3 | 3 111 |
4 3 4 1 2 | 6 111122 |
Explicaţie
Pentru primul exemplu, permutarea este deja sortata. Deci, raspunsul este 3.
Pentru cel de-al doilea exemplu, aplicand operatiile din fisierul de iesire, structura se va comporta astfel:
() -> (3) -> (3, 4) -> (3, 4, 1) -> (3, 4, 1, 2) -> (2, 3, 4, 1) -> (1, 2, 3, 4).