Submission #1336983

#TimeUsernameProblemLanguageResultExecution timeMemory
1336983nguyenkhangninh99XORanges (eJOI19_xoranges)C++20
100 / 100
77 ms6260 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long
const int maxn = 2e5 + 5;
int bit[maxn][2];
void update(int p, int b, int val){
    for(; p < maxn; p += p & -p) bit[p][b] ^= val;
}
int get(int p, int b){ 
    int res = 0;
    for(; p; p -= p & -p) res ^= bit[p][b];
    return res; 
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int n, q; cin >> n >> q;
    vector<int> a(n + 1);
    for(int i = 1; i <= n; i++){
    	cin >> a[i];
    	update(i, i % 2, a[i]);
	}
	while(q--){
		int t, l, r; cin >> t >> l >> r;
		if(t == 1){
			update(l, l % 2, r ^ a[l]);
			a[l] = r;
		}else cout << ((r % 2 == l % 2) ? (get(r, r % 2) ^ get(l - 1, r % 2)) : 0) << "\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...