| Task: | Xor sum |
| Sender: | aalto26dm_017 |
| Submission time: | 2026-09-21 16:32:51 +0300 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.38 s | details |
Code
#include <iostream>
#include <vector>
#include <climits>
using namespace std;
void buildTree(vector<long long>& tree, vector<long long>& arr, long long node, long long l, long long r){
if (l==r){
tree[node]=arr[l];
return;
}
long long mid=(l+r)/2;
buildTree(tree, arr, node*2, l, mid);
buildTree(tree, arr, node*2+1, mid+1, r);
tree[node]=tree[node*2]^tree[node*2+1];
}
long long query(vector<long long>& tree, long long ql, long long qr, long long node, long long l, long long r){
if (qr<l || ql>r){
return 0;
}
if (ql<=l && qr>=r){
return tree[node];
}
long long mid=(l+r)/2;
return query(tree, ql, qr, node*2, l, mid)^query(tree, ql, qr, node*2+1, mid+1, r);
}
int main(){
long long n, q;
cin >> n >> q;
vector<long long> arr(n+1);
for (long long i=0;i<n;i++){
cin >> arr[i+1];
}
vector<pair<long long,long long>> queries(q);
for (long long i=0;i<q;i++){
long long a, b;
cin >> a >> b;
queries[i]={a, b};
}
vector<long long> segTree(4*n);
buildTree(segTree, arr, 1, 1, n);
//for (int i=0;i<segTree.size();i++){
//cout << segTree[i] << ' ';
//}
//cout << '\n';
for (auto &q: queries){
cout << query(segTree, q.first, q.second, 1, 1, n) << '\n';
}
return 0;
}Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 8 36 7 6 4 6 2 9 4 8 1 1 1 2 1 3 ... |
| correct output |
|---|
| 7 1 5 3 1 ... |
| user output |
|---|
| 7 1 5 3 1 ... |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 921726510 307633388 992247073 ... |
| correct output |
|---|
| 834756431 130379787 403037296 308618218 784778243 ... |
| user output |
|---|
| 834756431 130379787 403037296 308618218 784778243 ... |
