백준 #16713 Generic Queries


BOJ #16713 - Generic Queries

https://www.acmicpc.net/problem/16713

# 문제 분류

Prefix Sum

풀이 접근 방법


XOR이 어느 연산에 닫혀있는지 생각해보면 쉽습니다. 나중에 XOR 세그먼트 트리 같은 것으로도 응용될 수 있습니다.


#include <algorithm>
#include <cmath>
#include <iostream>
#include <queue>
#include <utility>
#include <vector>

#define fup(i, a, b, c) for (int(i) = (a); (i) <= (b); (i) += (c))
#define fdn(i, a, b, c) for (int(i) = (a); (i) >= (b); (i) -= (c))
#define endl "\n"

using namespace std;

typedef long long ll;
typedef pair<ll, ll> pl;
typedef pair<int, int> pi;
typedef vector<int> vi;
typedef vector<pi> vii;
const ll MOD = 1e9 + 7;
const int stMAX = 1 << 18;
const int INF = 1e9;
int N, Q, arr[(int)1e6 + 10], s, e;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> N >> Q;
    fup(i, 1, N, 1) {
        cin >> arr[i];
        arr[i] ^= arr[i - 1];
    }

    ll result = 0;
    fup(i, 1, Q, 1) {
        cin >> s >> e;
        result ^= (arr[e] ^ arr[s - 1]);
    }

    cout << result;
}