== include(page="template/taskheader" task_id="luffxor") ==
Poveste şi cerinţă...
Desi nu a terminat inca de numarat muntii din problema precedenta, Bluff a fost strafulgerat de o noua idee de problema. Entuziasmat de noua sclipire, s-a grabit sa o impartaseasca si prietenilor lui. Spre dezamagirea lui Bluff, acestia nu au parut insa prea incantati de descoperirea sa; mai mult, din motive necunoscute, el a fost si poreclit TractoBluff. Ajutati-i totusi pe prietenii lui Bluff sa rezolve problema acestuia pentru a nu se simti inferiori:
Se da $V$, un multiset (acelasi numar poate aparea de mai multe ori), initial gol, asupra caruia se aplica trei tipuri de operatii:
# O operatie de tip $0$, data sub forma $(0, x)$, insereaza numarul $x$ in $V$;
# O operatie de tip $1$, data sub forma $(1, x)$, sterge al $x$-lea numar inserat in $V$. Se garanteaza ca operatia este valida: acesta nu a fost deja sters iar $x ≤$ numarul de inserari facute pana la momentul respectiv. Operatiile de insert sunt indexate incepand cu $1$;
# O operatie de tip $2$, data sub forma $(2, x, k)$, cere calcularea numarului de elemente $y$ din $V$, cu proprietatea $y xor x ≤ k$.
Dandu-se operatiile ce se aplica asupra multisetului V, sa se afle raspunsurile pentru operatiile de tip $2$.
h2. Date de intrare
Fişierul de intrare $luffxor.in$ ...
Pe prima linie a fisierului de intrare $luffxor.in$ se afla $m$, numarul de operatii. Pe urmatoarele $m$ linii se afla operatiile aplicate, cate una pe linie, in ordinea executarii lor, in formatul descris anterior.
h2. Date de ieşire
În fişierul de ieşire $luffxor.out$ ...
Fisierul de iesire $luffxor.out$ va contine $q$ linii, unde $q$ este numarul de operatii de tip $2$ executate. Raspunsurile vor fi afisate cate unul pe linie.
h2. Restricţii
* $... ≤ ... ≤ ...$
* $m ≤ 200.000$
* Toate numerele din fisierul de intrare $≤ 2.000.000.000$
* Acelasi poate aparea de mai multe ori in $V$
* Pentru 30% din teste, $m ≤ 10.000$
* Pentru alte 10% din teste, toate numerele din fisierul de intrare $≤ 100$
h2. Exemplu
table(example). |_. luffxor.in |_. luffxor.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
h3. Explicaţie
| 5
0 1
0 2
2 3 1
1 2
2 3 1
| 1
0
|
...
== include(page="template/taskfooter" task_id="luffxor") ==
== include(page="template/taskfooter" task_id="luffxor") ==