== include(page="template/taskheader" task_id="turneu2") ==
Se consideră un număr întreg pozitiv $K$ şi $N = 2^K^$. La un turneu participă $N$ concurenţi numerotaţi de la $0$ la $N-1$. Pentru fiecare concurent $i$ este cunoscută puterea acestuia $p[i]$. Puterile sunt numere întregi pozitive distincte şi strict mai mici decât $N$. Cu alte cuvinte şirul $p[]$ este o permutare a numerelor întregi de la $0$ la $N-1$. Un meci între doi concurenţi este câştigat de jucătorul care are putere mai mare.
În primul tur al turneului se desfăşoară meciuri după cum urmează: primul meci este între concurenţii $0$ şi $1$, al doilea meci între concurenţii $2$ şi $3$ , ş.a.m.d , al m-lea meci este între concurenţii $2m-2$ şi $2m-1$. Ultimul meci din primul tur va fi între jucătorii $N-2$ şi $N-1$.
Începând cu al doilea tur meciurile se vor desfăşura astfel: primul meci va fi între câştigătorii din primele două meciuri din turul anterior, al doilea meci între câştigătorii următoarelor două meciuri, ş.a.m.d. astfel că ultimul meci va fi între câştigătorii ultimelor două meciuri din turul anterior. Turneul va continua până va fi desemnat câştigătorul turneului.
Să ne imaginăm următorul scenariu: sunteţi concurentul cu puterea $x$ şi aţi vrea să câştigaţi cât mai multe meciuri în turneu. Pentru a atinge acest scop aveţi dreptul să faceţi un număr de cel mult $y$ intershimbări între participanţii la turneu. La o interschimbare poziţiile celor doi jucători în tabloul iniţial al meciurilor din primul tur se schimbă între ele. După efectuarea a cel mult $y$ interschimbări turneul începe şi se supune regulilor descrise mai sus, dar datorită modificărilor este posibil ca la unele dintre meciuri câştigătorii să fie diferiţi.
Poveste şi cerinţă...
h2. Date de intrare
În primul rând al fişierului de intrare $turneu2.in$ va apărea $N$.
Pe al doilea rând al fişierului de intrare vor apărea valorile şirului $p$.
Pe al treilea rând al fişierului de intrare va apărea $Q$, numărul de scenarii ce vor apărea in fişier.
În următoarele $Q$ rânduri ale fişierului de intrare va apărea o pereche de numere $p q$, dintre care fiecare reprezintă câte un scenariu de test. Dacă $v$ este răspunsul pentru scenariul precedent (sau $0$ dacă este vorba de primul scenariu), atunci în acest scenariu de test $x = p xor v$ şi $y = q xor v$.
Fişierul de intrare $turneu2.in$ ...
h2. Date de ieşire
Fişierul de ieşire $turneu2.out$ va conţine răspunsurile pentru cele $Q$ scenarii, în ordinea în care sunt date, câte unul pe un rând.
În fişierul de ieşire $turneu2.out$ ...
h2. Restricţii si precizări
h2. Restricţii
* *ATENŢIE!* Un jucător poate fi schimbat cu oricare alt jucător – inclusiv jucătorul cu puterea $x$.
* $2 ≤ K ≤ 20$
* $0 ≤ x, y ≤ N-1$
* $Q ≤ 500 000$
* Pentru $15$ puncte $K ≤ 10$, $Q ≤ 1000$
* Pentru alte $20$ de puncte $K ≤ 17$, valorile $x$ ale interogărilor sunt date în ordine crescătoare
* Pentru alte $10$ puncte $K = 18$
* Pentru alte $10$ puncte $K = 19$
* Pentru restul de $45$ de puncte $K = 20$
* *Atenţie la limita de memorie!*
* $... ≤ ... ≤ ...$
h2. Exemplu
table(example). |_. turneu2.in |_. turneu2.out |
| 4
3 2 0 1
4
1 0
1 1
1 3
0 0
| 1
0
2
1 |
| 8
2 7 3 0 1 4 6 5
5
3 1
1 2
0 4
5 6
5 5
| 2
1
1
2
3 |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
h2. Explicaţie
h3. Explicaţie
În primul exemplu, valorile pe care le ia $(x, y)$ în diferetele scenarii sunt $(1, 0), (0, 2), (3, 1), (2, 2)$.
În cel de-al doilea exemplu, valorile pe care le ia $(x, y)$ în diferetele scenarii sunt $(3, 1), (3, 0), (1, 5), (4, 7), (7, 7)$
...
== include(page="template/taskfooter" task_id="turneu2") ==