triaj

Time limit: 2.5s Memory limit: 128MB Input: triaj.in Output: triaj.out

Într-o zonă unde se face triajul vagoanelor sunt exact 10131013 linii ferate paralele, numerotate de la 11 la 10131013, legate între ele prin două linii laterale plus o linie suplimentară ca în figură.

Pe linia 11 se află iniţial NN vagoane, fiecare vagon având un număr scris pe el. Numerele de pe vagoane nu sunt neapărat distincte. Ronnie „The Rocket” O’Sullivan, care s-a lăsat de snooker şi s-a angajat la CFR ca să o impresioneze pe sora lui Alex, doreşte să ordoneze crescător vagoanele tot pe linia 11, putând face doar următorul tip de operaţie: selectează o linie şi un capăt (stânga sau dreapta) din care extrage o secvenţă de oricâte vagoane şi plasează fiecare vagon pe orice linie în orice capăt. El poate efectua cel mult două operaţii de extragere din fiecare linie, câte maximum una pentru fiecare capăt. Dar poate efectua oricâte operaţii de plasare a vagoanelor pe orice linie. Linia suplimentară şi cele laterale sunt doar pentru a asigura transportul vagoanelor dintr-o parte în alta, pe acestea neputând staţiona vagoane.

Cerință

Să se determine o succesiune de operaţii de extragere şi plasare a vagoanelor pe care le poate efectua Ronnie astfel încât în final pe linia 11 vagoanele să fie ordonate crescător după numerele asociate.

Date de intrare

Fişierul de intrare triaj.in conţine numărul natural NN. Pe linia a doua se află NN numere naturale separate prin câte un spaţiu reprezentând, de la stânga la dreapta, valorile asociate celor NN vagoane aflate pe linia 1.

Date de ieșire

Fişierul de ieşire triaj.out va conţine pe prima linie un număr natural MM reprezentând numărul de operaţii efectuate. Pe următoarele MM linii se vor afla descrise fiecare din cele MM operaţii. Fiecare linie mai întâi conţine trei numere naturale LL, CC şi VV, unde LL este numărul liniei de unde se extrag vagoane, CC este capătul de unde se extrag (00 – capătul stâng, 11 – capătul drept), VV numărul de vagoane extrase. Urmează pe aceeaşi linie 2V2 \cdot V numere naturale, câte două pentru fiecare vagon reprezentând linia şi capătul unde va fi introdus.

Restricții și precizări

  • 3N1 000 0003 \leq N \leq 1 \ 000 \ 000
  • Numerele de pe vagoane sunt valori naturale cel mult egale cu 2302^{30}
  • Pentru fiecare test, dacă ordonarea vagoanelor se face corect, va fi acordat punctajul în funcţie de xx, acesta fiind numărul maxim de extrageri de la un capăt al unei linii:
  • Dacă x1x \leq 1, se primeşte întregul punctaj
  • Dacă x2x \leq 2, se primeşte 80%80\% din punctaj
  • Dacă x4x \leq 4, se primeşte 60%60\% din punctaj
  • Dacă x8x \leq 8, se primeşte 40%40\% din punctaj
  • Dacă x>8x > 8, se primeşte 20%20\% din punctaj
  • Pentru 15%15\% din teste, valorile de pe vagoane sunt de cel mult 2 0002 \ 000
  • Pentru încă 20%20\% din teste, N2 000N \leq 2 \ 000
  • Pentru încă 40%40\% din teste, valorile de pe vagoane sunt de cel mult 1 000 0001 \ 000 \ 000
  • Ancorat în sinergia progresului CFR, infatigabilul Ronnie a evitat cu sagacitate meandrele inextricabile ale crizei economice, având un salariu mirobolant.

Exemplu

triaj.in

4
2 6 13 2

triaj.out

4
1 1 4 2 1 13 1 6 1 2 1
13 0 1 1 0
6 0 1 1 0
2 0 2 1 0 1 0

Explicație

Prima operaţie: se extrag de la linia 11, capătul drept, 44 vagoane, deci în ordinea 2,13,6,22, 13, 6, 2. Vagonul cu valoarea 22 se pune la linia 22, capătul drept; cel cu valoare 1313 se pune la linia 1313, capătul drept; al treilea vagon (de valoare 66) se pune la capătul drept al liniei 66; ultimul vagon se pune la capătul drept al liniei 22.

A doua operaţie: se extrage de la linia 1313, de la capătul stâng, un vagon, care se pune pe la capătul stâng al liniei 11.

A treia operaţie: se extrage de la linia 66, din capătul stâng al liniei, un vagon, care se pune capătul stâng al liniei 11.

A patra operaţie: Se extrag de la linia 22 cele două vagoane de valoare 22 şi se depun ambele pe la capătul stâng la linia 11.

Log in or sign up to be able to send submissions!