Fişierul intrare/ieşire:piezisa.in, piezisa.outSursăONI 2022 Baraj Seniori Ziua 1
AutorGeorge-Alexandru Rapeanu, Ioan PopescuAdăugată decadmium_Voicu Mihai Valeriu cadmium_
Timp execuţie pe test7 secLimită de memorie262144 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Piezisa

Nota: Din motive de capacitate a serverului InfoArena, multe modificari substantiale au fost facute testelor de evaluare. Astfel, punctajele obtinute in concurs pot diferi de cele obtinute aici.

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 vi, 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 [li, ri]. 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 vi 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 [li, ri]. Trebuie să calculaţi, pentru fiecare astfel de interval, lungimea intervalului de lungime minimă [x, y], cu proprietatea că x ≤ li ≤ ri ≤ y şi pentru care vx xor vx+1 xor ... xor vy = 0.

Date de intrare

Pe prima linie a fişierul de intrare piezisa.in se va afla un singur număr natural, reprezentând valoarea lui n. A doua linie conţine n numere întregi, reprezentând valorile v0, v1, ... , vn−1 ​. 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 [li, ri].

Date de ieşire

În fişierul de ieşire piezisa.out se vor afişa q linii. Pe linia i, se va afla răspunsul la al i-lea plan.

Restricţii şi precizări

  • 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 cu 0, atunci răspunsul este −1.
  • 1 ≤ n ≤ 500 000.
  • 1 ≤ q ≤ 500 000.
  • 0 ≤ vi ≤ 230, pentru oricare 1 ≤ i ≤ n.
  • 0 ≤ li ≤ ri ≤ n, pentru oricare 1 ≤ i ≤ q.

Subtaskuri

#PunctajRestricţii
1101 ≤ n, q ≤ 500
2151 ≤ n, q ≤ 3 000
35vi < 4, pentru oricare 1 ≤ i ≤ n
4401 ≤ n ≤ 100 000
530Fără restricţii suplimentare

Exemple

piezisa.inpiezisa.out
6
2 0 3 3 2 2
4
5 5
1 1
0 1
2 2
2
1
5
2
10
5 7 3 6 1 2 5 2 5 4
3
7 9
5 8
1 5
8
4
-1

Explicaţii

Pentru primul exemplu:

Primul plan doreşte să viziteze magazinul de pe poziţia 5, care are valoarea 2. Observăm că subsegmentul [4, 5] (care conţine valorile 2, 2) are suma xor 0, aşadar el este cel mai mic subsegment cu xor 0 care conţine [5, 5]. Răspunsul va fi, aşadar, 2.
Al doilea plan conţine doar magazinul de pe poziţia 1, care are valoarea 0. Segmentul optim pentru acest plan este [1, 1].
Al treilea plan conţine magazinele 0 şi 1, care au valorile 2, 0. Segmentul optim pentru acest plan este [0, 4].
Al doilea plan conţine doar magazinul de pe poziţia 2, care are valoarea 3. Segmentul optim pentru acest plan este [2, 3].

Pentru cel de-al doilea exemplu:

Pentru primul plan, unul dintre segmentele optime este [2, 9], de lungime 8.
Pentru al doilea plan, unul dintre segmentele optime este [5, 8], de lungime 4.
Pentru al treilea plan, nu există niciun subsegment valid, aşadar este afişat −1.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?