#include <iostream>
#include <vector>
#include <set>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#define int long long
const int maxn = 2e5+7;
using namespace std;
const int N=2e5+5;
int t[2][2*N]{0};
int a[N]{0};
int qr(int i,int l,int r,int sz,int res=0){
for(l += sz, r += sz; l < r; l >>= 1, r >>= 1){
if(l&1) res ^= t[i][l++];
if(r&1) res ^= t[i][--r];
}return res;
}
int32_t main(){
int n, q; cin >> n >> q;
for(int i = 0; i < n; i++) cin >> a[i];
for(int i = 0; i < n; i += 2) t[0][i+n] = a[i];
for(int i = 1; i < n; i += 2) t[1][i+n] = a[i];
for(int i = n-1; i > 0; i--) t[0][i] = t[0][2*i]^t[0][2*i+1], t[1][i]=t[1][2*i]^t[1][2*i+1];
while(q--){
int gh; cin >> gh;
if(gh == 1){
int i, j; cin >> i >> j;
}
else {
int l, r; cin >> l >> r;
if((r-l+1)%2 == 0) cout << 0 <<'\n';
else cout << qr ((l-1)%2, l-1, r, n) <<'\n';
}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
4444 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
4444 KB |
Output is correct |
2 |
Correct |
2 ms |
4444 KB |
Output is correct |
3 |
Correct |
2 ms |
4444 KB |
Output is correct |
4 |
Correct |
1 ms |
4444 KB |
Output is correct |
5 |
Correct |
2 ms |
4444 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
4444 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
433 ms |
9204 KB |
Output is correct |
2 |
Correct |
461 ms |
9300 KB |
Output is correct |
3 |
Correct |
443 ms |
9436 KB |
Output is correct |
4 |
Correct |
394 ms |
9432 KB |
Output is correct |
5 |
Correct |
409 ms |
9352 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
4444 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |