Submission #609103

#TimeUsernameProblemLanguageResultExecution timeMemory
609103AliHasanliXORanges (eJOI19_xoranges)C++17
100 / 100
139 ms8652 KiB
#include <bits/stdc++.h>
using namespace std;
const int MAX = 200001;
int t[2][MAX];
int arr[MAX];

void inc(int id, int i, int dx) {
    for (; i < MAX; i |= i + 1) {
        t[id][i] ^= dx;
    }
}

int sum(int id, int i) {
    int res = 0;
    for (; i > 0; i = (i & (i + 1)) - 1) {
        res ^= t[id][i];
    }
    return res;
}

int main() {
    int n, q;
    scanf("%d%d", &n, &q);
    for (int i = 1; i <= n; ++i) {
        scanf("%d", &arr[i]);
        inc(i & 1, i, arr[i]);
    }
    while (q--) {
        int qt, l, r;
        scanf("%d%d%d", &qt, &l, &r);
        if (qt == 1) {
            inc(l & 1, l, arr[l] ^ r);
            arr[l] = r;
        } else {
            if ((r - l + 1) % 2 == 0) {
                puts("0");
                continue;
            }
            printf("%d\n", sum(l & 1, r) ^ sum(l & 1, l - 1));
        }
    }
}

Compilation message (stderr)

xoranges.cpp: In function 'int main()':
xoranges.cpp:23:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |     scanf("%d%d", &n, &q);
      |     ~~~~~^~~~~~~~~~~~~~~~
xoranges.cpp:25:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |         scanf("%d", &arr[i]);
      |         ~~~~~^~~~~~~~~~~~~~~
xoranges.cpp:30:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |         scanf("%d%d%d", &qt, &l, &r);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...