Module: Algoritmi golosi


Problem

9 /9


Sorbet e Gelato hanno crittografato il messaggio

Problem

Sorbet e Gelato hanno appreso dati importanti. Questi dati sono un segreto che non può essere divulgato, ma il loro volume era così grande che non era possibile ricordarli completamente. Così hanno deciso di criptarli.

Sorbet ha compilato un messaggio dai dati. Dopo la digitalizzazione, il messaggio era una sequenza M di n numeri interi non negativi. Per la crittografia, Sorbet ha generato una chiave casuale K, anch'essa una sequenza di n numeri interi non negativi.
Successivamente, ha calcolato il messaggio crittografato A come XOR bit a bit di ciascun elemento corrispondente del messaggio originale e della chiave (Ai = Mi ⊕ K i) .
Sorbet ha tenuto per sé il messaggio crittografato e, per garantire la sicurezza, la chiave è stata inviata a Gelato, che l'ha cancellata. Tuttavia, il canale di trasmissione si è rivelato inaffidabile e Gelato ha ricevuto la chiave P, in cui sono stati scambiati alcuni elementi di K. Cioè, ho una permutazione della chiave originale K.

Quando è arrivato il momento di decodificare il messaggio, sono rimasti inorriditi nel rendersi conto del problema. Tuttavia, Sorbet ha ricordato che il messaggio originale era lessicograficamente piuttosto piccolo (ma conteneva solo numeri non negativi).
Così Sorbet e Gelato hanno deciso di scoprire qual è il messaggio lessicograficamente più piccolo che potrebbe essere crittografato. Aiutali a capirlo.

Inserimento:
La prima riga contiene un singolo numero intero n (1 ≤ n ≤ 300000) — lunghezza del messaggio.
La seconda riga contiene n numeri interi A1, A2, ..., An (0 ≤  Ai < 230) — messaggio crittografato.
La terza riga contiene n numeri interi P1, P2, ..., Pn (0 ≤  Pi < 230) — una chiave di crittografia i cui elementi sono riorganizzati arbitrariamente.

Uscita:
Stampa una riga con n numeri interi — il messaggio originale lessicograficamente più piccolo possibile. Ricorda che tutti i numeri devono essere non negativi.

Esempi:
 
Input Uscita
3
8 4 13
17 2 7
10 3 28
5
12 7 87 22 11
18 39 9 12 16
0 14 69 6 44

Spiegazione:
Nel primo esempio, la soluzione è (10, 3, 28) perché 8 ⊕ 2 = 10, 4 ⊕ 7 = 3 e 13 ⊕ 17 = 28. 
Altre possibili permutazioni chiave danno i messaggi (25, 6, 10), (25, 3, 15), (10, 21, 10), (15, 21,   ;15) e (15, 6, 28), che sono lessicograficamente più grandi della soluzione ottimale.