Nu aveti permisiuni pentru a descarca fisierul grader_test2.ok
Diferente pentru problema/timetravel intre reviziile #16 si #4
Nu exista diferente intre titluri.
Diferente intre continut:
== include(page="template/taskheader" task_id="timetravel") ==
Avem o structura dedate care permite efectuareaoperatiilor inaintesi inapoiin timp. Structura de date accepta operatii de $insert(val)$ si $erase(time,val)$. Totodata, putem sa ne ducem inainte sau inapoi in timp pentru a sterge sau adauga una dintreaceste doua opertii.Periodic, mai avemoperatii de $query(time, val)$, pentru care trebuie sa raspundem, luand in considerare operatiile de pana acum, care este cel mai mic numar mai mare sau egal ca numarul $val$ la momentul $time$ pe axa temporala.
Vreau sa scrieti voi
h2. Date de intrare
Se da un numar natural $M$reprezentandnumarul de operatii.
M pe prima linie numarul de operatii.
Pe urmatoarele $M$ linii urmeaza descrierea fiecarei operatii. Operatiile sunt de $5$ tipuri.Fiecare rand are prima valoare tipul operatie:
Fiecare rand are prima valoare tipul operatie:
Dacaavemoperatiede tip$1$,se adaugaoperatia $insert(val)$. Aceasta operatiereprezinta inserareavalorii $val$ la momentul detimp $-infinit$.
Daca e de tipul 1 se adauga insert(-inf, val(ccare se citeste))
Dacaavemoperatiede tip$2$,se adaugaoperatia $erase(time, val)$. Acestaoperatiereprezintastergereavalorii $val$, daca exista, la momentul detimp$time$. Nu se garanteaza ca val exista,sau va exista vreodata.
Daca e de tipul 2 se adauga erase(time(care se citeste), val(care se citeste)) , nu se garanteaza ca val exista inca sau ca va exista vreodata, pot exista mai multe, se pastreaza toate
Dacaavemoperatiede tip$3$,sevastergeooperatie de $insert(val)$ dinstructura. Segaranteazaca exista o operatiede insert(val) cuaceastavaloaredejainstructura.
Daca e de tipul 3 se sterge un insert(-inf, val(care se citeste)), se garanteaza ca val exista
Dacaavemoperatiede tipul$4$,sevastergeo operatiede$erase(time, val)$ din structura. Segaranteazaca exista o operatiedeerase cu acestevalori. Incazulincaresuntmai multeoperatii deerasecu aceste valori,sevasterge unasingura.
Daca e de tipul 4 se sterge *exact un* erase(time(care se citeste), val(care se citeste)), se garanteaza ca un erase(time, val) cu aceste valori exista
Dacaavemoperatiede tipul$5$,trebuiesaraspundetila intrebarea:careeste cea maimicavaloareaflatainstructura la timpul$time$mai maresauegala ca $val$?
Daca e de tipul 5 se face query(time(care se citeste), val(care se citeste)) cum scrie pe forum.
h2. Date de ieşire
În fişierul de ieşire $timetravel.out$ se va afisa pe linia $i$ raspunsul la a $i$-a operatie de tip query. Daca nu exista un astfel de numar se afiseaza $"Time paradox"$ (fara ghilimele).
În fişierul de ieşire $timetravel.out$ se va afisa raspunsul la fiecare query. Daca nu exista un astfel de numar se afiseaza "Time paradox" (fara ghilimele)
h2. Restricţii
* $1 ≤ M ≤ 500.000$ * $1 ≤ N ≤ 100.000 unde N e numarul de valori distincte cu care se apeleaza insert(val)$ * Nu vor exista doua operatii de insert cu aceeasi valoare in acelasi timp. * $-1.000.000.000 ≤ time, val ≤ 1.000.000.000$ pentru orice operatie
* $1 <= M <= 500.000$ * $1 <= N <= 100.000 unde N e numarul de valori distincte cu care se apeleaza insert(-inf, val)$ * $1 <= time, val <= 1.000.000.000$ pentru orice operatie
h2. Exemplu
