Submission #1265197

#TimeUsernameProblemLanguageResultExecution timeMemory
1265197PlayVoltzXORanges (eJOI19_xoranges)C++20
100 / 100
58 ms6216 KiB
#include <cstdio>
#include <stdio.h>
#include <stdbool.h>
#include <iostream>
#include <map>
#include <vector>
#include <climits>
#include <stack>
#include <string>
#include <queue>
#include <algorithm>
#include <set>
#include <unordered_set>
#include <unordered_map>
#include <cmath>
#include <cctype>
#include <bitset>
#include <iomanip>
#include <cstring>
#include <numeric>
#include <cassert>
using namespace std;
 
#define int long long
#define pii pair<int, int>
#define mp make_pair
#define pb push_back
#define fi first
#define se second

struct fen{
	int n;
	vector<int> ft;
	fen(int N){
		n=N;
		ft.resize(n+1, 0);
	}
	void up(int i, int v){
		for (;i<=n;i+=i&-i)ft[i]^=v;
	}
	int sum(int i){
		int res=0;
		for (;i;i-=i&-i)res^=ft[i];
		return res;
	}
	int query(int l, int r){
		return sum(r)^sum(l-1);
	}
}*ft[2];

int32_t main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n, q, a, b, c;
	cin>>n>>q;
	vector<int> vect(n+1);
	ft[0] = new fen(n);
	ft[1] = new fen(n);
	for (int i=1; i<=n; ++i)cin>>vect[i], ft[i%2]->up(i, vect[i]);
	while (q--){
		cin>>a>>b>>c;
		if (a==1)ft[b%2]->up(b, vect[b]), vect[b]=c, ft[b%2]->up(b, vect[b]);
		else if ((c-b+1)%2)cout<<ft[c%2]->query(b, c)<<"\n";
		else cout<<"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...