Mai intai trebuie sa te autentifici.
Diferente pentru problema/timetravel intre reviziile #4 si #16
Nu exista diferente intre titluri.
Diferente intre continut:
== include(page="template/taskheader" task_id="timetravel") ==
Vreau sa scrieti voi
Avem o structura de date care permite efectuarea operatiilor inainte si inapoi in 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 dintre aceste doua opertii. Periodic, mai avem operatii 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.
h2. Date de intrare
M peprimalinie numarul de operatii.
Se da un numar natural $M$ reprezentand numarul de operatii.
Fiecare rand are prima valoare tipul operatie:
Pe urmatoarele $M$ linii urmeaza descrierea fiecarei operatii. Operatiile sunt de $5$ tipuri. Fiecare rand are prima valoare tipul operatie:
Daca e de tipul1se adauga insert(-inf,val(ccare seciteste))
Daca avem operatie de tip $1$, se adauga operatia $insert(val)$. Aceasta operatie reprezinta inserarea valorii $val$ la momentul de timp $-infinit$.
Daca e de tipul2 se adauga erase(time(careseciteste),val(careseciteste)),nu se garanteaza ca val existaincasaucava exista vreodata, pot exista mai multe, se pastreaza toate
Daca avem operatie de tip $2$, se adauga operatia $erase(time, val)$. Acesta operatie reprezinta stergerea valorii $val$, daca exista, la momentul de timp $time$. Nu se garanteaza ca val exista, sau va exista vreodata.
Daca e de tipul3 se stergeuninsert(-inf,val(carese citeste)),segaranteazaca val exista
Daca avem operatie de tip $3$, se va sterge o operatie de $insert(val)$ din structura. Se garanteaza ca exista o operatie de insert(val) cu aceasta valoare deja in structura.
Daca e de tipul 4 se sterge*exactun*erase(time(carese citeste),val(care se citeste)),se garanteazaca un erase(time,val)cu aceste valori exista
Daca avem operatie de tipul $4$, se va sterge o operatie de $erase(time, val)$ din structura. Se garanteaza ca exista o operatie de erase cu aceste valori. In cazul in care sunt mai multe operatii de erase cu aceste valori, se va sterge una singura.
Daca e de tipul 5sefacequery(time(careseciteste),val(careseciteste))cumscriepeforum.
Daca avem operatie de tipul $5$, trebuie sa raspundeti la intrebarea: care este cea mai mica valoare aflata in structura la timpul $time$ mai mare sau egala ca $val$?
h2. Date de ieşire
Î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)
Î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).
h2. Restricţii
* $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
* $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
h2. Exemplu