| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1337543 | nambanana987 | XORanges (eJOI19_xoranges) | C++20 | 61 ms | 3968 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
#define sz(a) (int)a.size()
#define mk make_pair
#define pii pair<int,int>
int n,q;
namespace subtask1{
const int N=10005;
int M[N];
void solve(){
for(int i=1;i<=n;++i) cin>>M[i];
while(q--){
int type,l,r;cin>>type>>l>>r;
if(type==1){
M[l]=r;
}
else{
ll ans=0;
for(int i=l;i<=r;++i){
if((i-l+1)%2==0 || (r-i+1 )%2==0) continue;
ans^=M[i];
}
cout<<ans<<'\n';
}
}
}
}
struct Fenwick{
vector<int>fen;
int a;
Fenwick(int _n) : a(_n) , fen(_n+5){}
void update(int id,int val){
while(id<=a){
fen[id]^=val;
id+=id&-id;
}
}
int get(int id){
int res=0;
while(id>0){
res^=fen[id];
id-=id&-id;
}
return res;
}
int get_range(int l,int r){
return get(r) ^get(l-1);
}
};
namespace subtask2{
const int N=2e5+5;
int M[N];
void solve(){
Fenwick tree1(n),tree2(n);
for(int i=1;i<=n;++i) {
cin>>M[i];
if(i&1) tree1.update(i,M[i]);
else tree2.update(i,M[i]);
}
while(q--){
int type,l,r;cin>>type>>l>>r;
if(type==1){
int x=M[l]^r;
M[l]=r;
if(l&1) tree1.update(l,x);
else tree2.update(l,x);
}
else{
if(l+r &1){
cout<<0<<'\n';
}
else{
if(l&1){
cout<<tree1.get_range(l,r)<<'\n';
}
else cout<<tree2.get_range(l,r)<<'\n';
}
}
}
}
}
signed main(){
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n>>q;
subtask2::solve();
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
