아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

구간 XOR

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

요약
배열에서 구간 xor 갱신과 구간 xor 질의를 순서대로 처리한다.
난이도

보통10점 중 7점

유형
비트 연산, 세그먼트 트리, 누적 합, 배열
정답자
아직 제출이 없습니다

문제

크기가 NN인 수열 A0,A1,…,AN−1A_0, A_1, \dots, A_{N-1}이 주어진다. 이 수열에 다음 두 종류의 쿼리를 주어진 순서대로 처리한다.

  • 1 i j k: Ai,Ai+1,…,AjA_i, A_{i+1}, \dots, A_j 각각에 kk를 xor한다.
  • 2 i j: Ai,Ai+1,…,AjA_i, A_{i+1}, \dots, A_j를 모두 xor한 값을 출력한다.

입력

첫째 줄에 수열의 크기 NN이 주어진다.

둘째 줄에 A0,A1,…,AN−1A_0, A_1, \dots, A_{N-1}이 공백 한 칸으로 구분되어 차례대로 주어진다.

셋째 줄에 쿼리의 개수 MM이 주어지고, 이어지는 MM개의 줄에 쿼리가 한 줄에 하나씩 주어진다.

출력

2번 쿼리를 만날 때마다 그 결과를 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.

제한

  • 1≤N,M≤500,0001 \le N, M \le 500{,}000
  • 0≤Ai≤100,0000 \le A_i \le 100{,}000이고 AiA_i는 정수
  • 두 종류의 쿼리 모두 0≤i≤j<N0 \le i \le j < N
  • 1번 쿼리에서 0≤k≤100,0000 \le k \le 100{,}000이고 kk는 정수

예제2

  1. 예제 1

    입력
    5
    1 2 3 4 5
    3
    2 0 4
    1 2 4 9
    2 0 4
    
    예상 출력
    1
    8
    
  2. 예제 2

    입력
    1
    7
    4
    2 0 0
    1 0 0 5
    2 0 0
    2 0 0
    
    예상 출력
    7
    2
    2