Submission #763284

#TimeUsernameProblemLanguageResultExecution timeMemory
763284Halym2007XORanges (eJOI19_xoranges)C++11
38 / 100
108 ms11276 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define sz size() #define pb push_back using namespace std; typedef long long ll; const int N = 600005; // const int mod = 1e9+7; // ll bigmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} void solve(); int n, q; ll a[200005], sum, st[N][2]; void build (int ind, int x, int y) { if (x == y) { if (x % 2 == 1) { st[ind][1] = a[x]; } else { st[ind][0] = a[x]; } return; } build (ind * 2, x, (x + y) / 2); build (ind * 2 + 1, (x + y) / 2 + 1, y); st[ind][0] = st[ind * 2][0] ^ st[ind * 2 + 1][0]; st[ind][1] = st[ind * 2][1] ^ st[ind * 2 + 1][1]; } void update (int ind, int l, int r, int x, ll y) { if (l == r) { st[ind][x % 2] = y; return; } if(x < l or x > r) return; update(ind * 2, l, (l+r)/2, x, y); update(ind * 2, (l+r)/2 + 1, r, x, y); // int uu = (l + r) / 2; // if (l <= x and x <= uu) { // update (ind * 2, l, uu, x, y); // } // else { // update (ind * 2 + 1, uu + 1, r, x, y); // } st[ind][x % 2] = st[ind * 2][x % 2] ^ st[ind * 2 + 1][x % 2]; } void jogap (int ind, int l, int r, int x, int y, int op) { if (r < x or y < l) return; if (x <= l and r <= y) { sum ^= st[ind][op]; return; } jogap (ind * 2, l, (l + r) / 2, x, y, op); jogap (ind * 2 + 1, (l + r) / 2 + 1, r, x, y, op); } int main() { ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); // clock_t tStart = clock(); // printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC); cin >> n >> q; for (int i = 1; i <= n; ++i) { cin >> a[i]; } build (1, 1, n); while ( q-- ) { int x, l; ll r; cin >> x >> l >> r; if ((l % 2) != (r % 2)) { cout << "0\n"; continue; } if (x == 1) { a[l] = r; update (1, 1, n, l, r); } else { sum = 0; jogap (1, 1, n, l, r, l % 2); cout << sum << "\n"; } } } /* ██╗░░██╗░█████╗░██╗░░░░░██╗░░░██╗███╗░░░███╗██████╗░░█████╗░░█████╗░███████╗ ██║░░██║██╔══██╗██║░░░░░╚██╗░██╔╝████╗░████║╚════██╗██╔══██╗██╔══██╗╚════██║ ███████║███████║██║░░░░░░╚████╔╝░██╔████╔██║░░███╔═╝██║░░██║██║░░██║░░░░██╔╝ ██╔══██║██╔══██║██║░░░░░░░╚██╔╝░░██║╚██╔╝██║██╔══╝░░██║░░██║██║░░██║░░░██╔╝░ ██║░░██║██║░░██║███████╗░░░██║░░░██║░╚═╝░██║███████╗╚█████╔╝╚█████╔╝░░██╔╝░░ ╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝░░░╚═╝░░░╚═╝░░░░░╚═╝╚══════╝░╚════╝░░╚════╝░░░╚═╝░░░ */
#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...