답안 #446779

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
446779 2021-07-23T09:02:02 Z fuad27 XORanges (eJOI19_xoranges) C++14
18 / 100
607 ms 6160 KB
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct fenwick {
	int v[200000] = {0};
	void update(int i, int val) {
		i++;
		while(i < 200000) {
			v[i] ^= val;
			i += i&(-i);
		}
	}
	int getXor(int i) {
		int x = 0;
		while(i > 0) {
			x ^= v[i];
			i -= i & (-i);
		}
		return x;
	}
};
int32_t main () {
	int n, q;
	cin >> n >> q;
	vector<int> v(n, 0);
	fenwick x;
	fenwick xodd;
	for(int i = 0;i<n;i++) {
		int p;
		cin >> p;
		v[i] = p;
		x.update(i, p);
		if(i%2 == 0) {
			xodd.update(i, p);
		}
	}
	while(q--) {
		int k;
		cin >> k;
		if(k == 1) {
			int i, val;
			cin >> i >> val;
			x.update(i, val ^ v[i-1]);
			if(i%2 == 1) {
				xodd.update(i, val ^ v[i-1]);
			}
			v[i-1] = val;
		}
		else {
			int l, u;
			cin >> l >> u;
			if((u - l)%2 == 0) {
				if(l%2 == 1) {
					int ans = xodd.getXor(u) ^ xodd.getXor(l-1);cout<<ans<<endl;
				}
				else {
					int ans = x.getXor(u) ^ xodd.getXor(u) ^ x.getXor(l-1) ^ xodd.getXor(l-1);cout<<ans<<endl;
 
				}
			}
			else {
				cout<<0<<endl;
			}
		}
	}
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 3320 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 3404 KB Output is correct
2 Correct 5 ms 3404 KB Output is correct
3 Correct 5 ms 3404 KB Output is correct
4 Correct 4 ms 3404 KB Output is correct
5 Correct 4 ms 3392 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 3320 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 607 ms 6160 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 3320 KB Output isn't correct
2 Halted 0 ms 0 KB -