Cunoscut pentru multe lucruri importante, cum ar fi metroul orașului și festivalul Nespus, orașul Jluc găzduiește încă un obiectiv turistic, totuși mai puțin cunoscut decât cele menționate anterior – Piezișă.
La prima vedere, Piezișă este doar o stradă, cu mai multe magazine de-a lungul ei. Mai exact, aceasta are n
magazine poziționate de-a lungul ei, numerotate de la 0
la n − 1
. Totuși, Piezișă este mai mult decât ceea ce pare: este un loc unde se creează amintiri. Magazinul i
are un numar asociat , care reprezintă calitatea amintirilor create în acel magazin.
Auzind de această stradă, Alex își dorește să viziteze un interval continuu de magazine în seara aceasta. El are q
planuri de asemenea intervale, al i
-lea fiind de forma . Pentru a nu pierde timp, el dorește să meargă pe Piezișă cu noua sa trotinetă electrică. Totuși, Alex este superstițios, și este convins că dacă suma xor
a valorilor dintr-un interval vizitat nu ar fi 0
, atunci asta i-ar aduce ghinion. Așadar, pentru fiecare plan, el dorește să afle lungimea intervalului de lungime minimă care conține magazinele din plan, și care are suma xor
0
.
Formal, se dă un șir de n
valori intregi, și q
intervale de forma . Trebuie să calculați, pentru fiecare astfel de interval, lungimea intervalului de lungime minimă [x, y]
, cu proprietatea că și pentru care .
Date de intrare
Prima linie conține un singur număr natural, reprezentând valoarea lui n
. A doua linie conține n
numere întregi, reprezentând valorile . A treia linie conține un singur număr natural, reprezentând valoarea lui q
. Pe următoarele q
linii se află valorile corespunzătoare planurilor. Linia i + 3
conține 2
valori întregi, reprezentând și .
Date de ieșire
Se vor afișa q
linii. Pe linia i
, se va afla răspunsul la al i
-lea plan.
Restricții
- Operația
xor
reprezintă operația de sau exclusiv pe biți. în C/C++, acest operator esteˆ
. - Dacă pentru un plan, nu există niciun segment cu suma
xor
egala cu0
, atunci răspunsul este−1
. - , pentru oricare
- , pentru oricare
Subtask 1 (10 puncte)
Subtask 2 (15 puncte)
Subtask 3 (5 puncte)
- , pentru oricare
0 ≤ i < n
Subtask 4 (40 puncte)
Subtask 5 (30 puncte)
- Nu există alte restricții
Exemplul 1
stdin
6
2 0 3 3 2 2
4
5 5
1 1
0 1
2 2
stdout
2
1
5
2
Explicație
Primul plan dorește să viziteze magazinul de pe poziția , care are valoarea . Observăm că subsegmentul (care conține valorile ) are suma xor
0
, așadar el este cel mai mic subsegment cu xor
0
care conține . Răspunsul va fi, așadar, .
Al doilea plan conține doar magazinul de pe poziția , care are valoarea 0
. Segmentul optim pentru acest plan este .
Al treilea plan conține magazinele și , care au valorile . Segmentul optim pentru acest plan este .
Al doilea plan conține doar magazinul de pe poziția 2
, care are valoarea 3
. Segmentul optim pentru acest plan este [2, 3]
.
Exemplul 2
stdin
10
5 7 3 6 1 2 5 2 5 4
3
7 9
5 8
1 5
stdout
8
4
-1
Explicație
Pentru primul plan, unul dintre segmentele optime este , de lungime .
Pentru al doilea plan, unul dintre segmentele optime este , de lungime .
Pentru al treilea plan, nu există niciun subsegment valid, așadar este afișat .