Fişierul intrare/ieşire:culori2.in, culori2.outSursăLot 2004
AutorRadu Berinde, Tiberiu DanetAdăugată deastronomyAirinei Adrian astronomy
Timp execuţie pe test0.85 secLimită de memorie9216 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Culori2

Muncitorii de la cooperativa Munca-n zadar au la dispozitie o teava cu lungimea de N metri. Initial aceasta teava are culoarea C. Muncitorii pot taia o bucata de teava in doua bucati de lungimi intregi si revopsi cele doua bucati. Muncitorii pot sa se si razgandeasca si sa sudeze la loc doua bucati inapoi in bucata mare din care au fost despartite si sa o revopseasca cu culoarea pe care o avea inainte de taiere. Prin taiere sau sudare bucatile de tevi nu se muta din locul lor initial si deci o bucata de teava poate fi identificata prin pozitia ei. Pozitia unei bucati de teava este specificata prin distanta dintre inceputul tevii initiale si inceputul bucatii de teava exprimata in metri.

Cerinta

Lucrati la aceasta cooperativa si trebuie sa scrieti un program care implementeaza urmatoarele comenzi:

  • SPLIT (P L CL CR): bucata de teava care incepe la pozitia P va fi impartita in doua bucati mai mici, cea din stanga avand marimea L. Apoi bucata din stanga va fi colorata cu culoarea CL si cea din dreapta cu culoarea CR. Se garanteaza ca 0 < L < lungimea bucatii de teava care trebuie impartita
  • UNDO (P): bucata care incepe la pozitia P se va resuda cu bucata imediat din dreapta ei. Se garanteaza ca in momentul apelarii acestei comenzi bucata imediat din dreapta ei este cea obtinuta prin aceeasi operatie de taiere in urma careia a rezultat bucata de la pozitia P (chiar daca se poate ca oricare dintre cele doua bucati sa fi fost taiate si resudate). Bucata rezultata se va recolora in culoarea pe care o avea inainte de taiere
  • GETCOLOR (P): se afiseaza culoarea bucatii care incepe la pozitia P

Pentru toate comenzile, va exista o bucata de teava care sa inceapa la pozitia P.

Date de intrare

Fisierul culori2.in contine pe prima linie numerele N, C si M, separate printr-un spatiu. Fiecare dintre urmatoarele M linii contine o comanda. Comenzile sunt codificate astfel:

  • SPLIT (P L CL CR) -> 2 P L CL CR
  • UNDO (P) -> 1 P
  • GETCOLOR (P) -> 0 P

Date de iesire

Fisierul culori2.out va contine atatea linii cate comenzi GETCOLOR sunt, reprezentand culorile respective, in ordinea comenzilor GETCOLOR corespunzatoare.

Restrictii

  • 1 ≤ N ≤ 524288 (219)
  • 1 ≤ M ≤ 2 000 000
  • Toate culorile au valori cuprinse intre 0 si 255 (inclusiv)
  • Pozitiile vor fi numere intregi intre 0 la N-1 (inclusiv)

Exemplu

culori2.inculori2.out
11 3 13
2 0 8 1 3
1 0
2 0 10 3 0
0 0
2 0 9 1 1
2 0 8 2 3
1 0
2 0 5 2 3
1 0
2 0 5 3 2
0 9
1 0
0 0
3
1
1
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content