Editorial for Range XOR
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Approach
Let be the XOR of the first
elements:
XOR is its own inverse, so:
So we first build the prefix XOR array in , then answer each query in
.
The total time complexity is .
Solution (Python)
n = int(input())
values = list(map(int, input().split()))
prefix = [0] * (n + 1)
for i, value in enumerate(values, start=1):
prefix[i] = prefix[i - 1] ^ value
q = int(input())
for _ in range(q):
l, r = map(int, input().split())
print(prefix[r] ^ prefix[l - 1])
Comments