수열과 쿼리 11

시간 제한2초메모리 제한512 MB

요약
배열과 정수 K가 주어질 때, 각 질의 [l, r] 안에서 XOR이 K인 부분 배열의 개수를 구한다.
난이도

어려움10점 중 8점

유형
누적 합, 해시맵, 분할 정복, 이분 탐색
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \ldots, A_N과 정수 KK가 주어진다. 다음 쿼리를 수행하는 프로그램을 작성하시오.

  • l r: l≤i≤j≤rl \le i \le j \le r이면서 Ai,Ai+1,…,AjA_i, A_{i+1}, \ldots, A_j를 모두 XOR한 값이 KK인 쌍 (i,j)(i, j)의 개수를 출력한다.

입력

첫째 줄에 수열의 크기 NN (1≤N≤100,0001 \le N \le 100{,}000)과 KK (0≤K≤1,000,0000 \le K \le 1{,}000{,}000)가 주어진다.

둘째 줄에 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. (0≤Ai≤1,000,0000 \le A_i \le 1{,}000{,}000)

셋째 줄에 쿼리의 개수 MM (1≤M≤100,0001 \le M \le 100{,}000)이 주어진다.

넷째 줄부터 MM개의 줄에 걸쳐 쿼리 ll, rr이 한 줄에 하나씩 주어진다. (1≤l≤r≤N1 \le l \le r \le N)

출력

각 쿼리의 답을 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    6 3
    1 2 1 1 0 3
    2
    1 6
    3 5
    
    예상 출력
    7
    0
    
  2. 예제 2

    입력
    5 1
    1 1 1 1 1
    3
    1 5
    2 4
    1 3
    
    예상 출력
    9
    4
    4