Submission #237603

#TimeUsernameProblemLanguageResultExecution timeMemory
237603PbezzXORanges (eJOI19_xoranges)C++14
100 / 100
213 ms11396 KiB
#include <bits/stdc++.h> using namespace std; #define loop(i,n) for (ll i = 0; i < n; i++) #define ll long long #define INF 1e9+5 #define MAXN 200007 #define pb push_back #define mp make_pair typedef pair<ll,ll> pii; ll arr[MAXN]; ll seg[4*MAXN][2]; void recalculate(ll int node){ seg[node][0]=seg[2*node+1][0]^seg[2*node+2][0]; seg[node][1]=seg[2*node+1][1]^seg[2*node+2][1]; } void build(ll node, ll left, ll right){ if(left==right){ if(left%2==0){seg[node][0]=arr[left]; seg[node][1]=0; } else{ seg[node][1]=arr[left]; seg[node][0]=0;} }else{ ll middle=(left+right)/2; build(2*node+1,left,middle); build(2*node+2,middle+1,right); recalculate(node); } } void update(ll node, ll left, ll right, ll x, ll y){ if(left==right){ if(left%2==0){seg[node][0]=y; seg[node][1]=0; } else{ seg[node][1]=y; seg[node][0]=0;} }else{ ll middle=(left+right)/2; if(x<=middle){ update(2*node+1,left,middle,x,y); }else{ update(2*node+2,middle+1,right,x,y); } recalculate(node); } } ll bruh; ll querie(ll node, ll left, ll right, ll a, ll b){ if(a<=left&&b>=right)return seg[node][bruh]; ll middle=(left+right)/2,ans=0; if(a<=middle)ans^=querie(2*node+1,left,middle,a,b); if(b>=middle+1)ans^=querie(2*node+2,middle+1,right,a,b); return ans; } int main(){ ll n,q,type,i,j,l,r; cin>>n>>q; loop(i,n){ scanf("%lld",&arr[i+1]); } build(0,1,n); while(q--){ scanf("%lld",&type); if(type==1){ scanf("%lld%lld",&i,&j); arr[i]=j; update(0,1,n,i,j); }else{ scanf("%lld%lld",&l,&r); if((r-l)%2==1){ printf("0\n"); }else{ bruh=l%2; printf("%lld\n",querie(0,1,n,l,r)); } } } return 0; }

Compilation message (stderr)

xoranges.cpp: In function 'int main()':
xoranges.cpp:87:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&arr[i+1]);
  ~~~~~^~~~~~~~~~~~~~~~~~
xoranges.cpp:94:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&type);
  ~~~~~^~~~~~~~~~~~~~
xoranges.cpp:98:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld",&i,&j);
  ~~~~~^~~~~~~~~~~~~~~~~~
xoranges.cpp:105:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld",&l,&r);
  ~~~~~^~~~~~~~~~~~~~~~~~
#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...