Fişierul intrare/ieşire:tdeque.in, tdeque.outSursăFMI No Stress 5
AutorTeodor PlopAdăugată defmins123FMI No Stress fmins123
Timp execuţie pe test0.05 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/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.intdeque.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).

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content