Multiset e XOR
Problem
Hai q query e un multiset A che inizialmente contiene solo il numero 0. Esistono tre tipi di query:
- +x — aggiungi il numero x al multiinsieme A.
- -x — rimuovere un'occorrenza del numero x dal multiinsieme A. È garantito che almeno un numero x sia presente nel multiinsieme in questo momento.
- ? x — ti viene dato un numero x, devi calcolare l'OR esclusivo bit per bit massimo (noto anche come XOR) del numero x e un certo numero y dal multiinsieme A.
Multiinsieme — questo è un set che consente più elementi identici.
Inserimento:
La prima riga dell'input contiene il numero q (1 ≤ q ≤ 200000) — il numero di richieste che Vasiliy deve elaborare.
Ognuna delle seguenti q righe dell'input contiene uno dei tre caratteri "+", "-" O "?" e il numero x
i (1 ≤ x
i ≤ 10
9). È garantito che ci sia almeno una query "?" nell'input.
Si noti che il numero 0 sarà sempre presente nel multiset.
Uscita:
Per ogni richiesta come "?" stampa un singolo numero intero — il valore massimo dell'XOR bit a bit per il numero x
i e qualsiasi numero dal multiset A.
Esempio:
Input |
Uscita |
10
+8
+9
+11
+ 6
+ 1
? 3
- 8
? 3
? 8
? 11 |
11
10
14
13 |