Submission #286229

# Submission time Handle Problem Language Result Execution time Memory
286229 2020-08-30T08:35:03 Z lukameladze XORanges (eJOI19_xoranges) C++14
55 / 100
1000 ms 15136 KB
# include <bits/stdc++.h>
using namespace std;
long long n,q,a[300005],ty,w,idx,val,tree[5][1200005],ans,x,ri,le;
void update(int node, int le, int ri, int idx, int val, int w)
{
       if (le>idx || ri<idx) return;
     if (idx==le && idx==ri)
     {
          tree[w][node]^=val;
          return ;
     }
     long long mid=(le+ri)/2;
     update(2*node, le, mid, idx, val , w);
     update(2*node+1, mid+1, ri , idx, val, w);
     tree[w][node]=tree[w][2*node]^tree[w][2*node+1];
}
long long getans(int node, int le, int ri, int start, int end, int w)
{
	if (le>end || ri<start) return 0;
	if (le>=start && ri<=end) 
	{
		return tree[w][node];
	}
	long long mid=(le+ri)/2;
	long long p1=getans(2*node, le, mid, start, end,w);
	 long long p2=getans(2*node+1, mid+1, ri, start, end,w);
	return p1^p2;
}
int main()
{
     cin>>n>>q;
     for (int i=1; i<=n; i++)
     {
          cin>>a[i];
          if (i%2==1)
          {
               update(1,1,n,i,a[i],1);
          }
          else
          {
               update(1,1,n, i,a[i],0);
          }
     }
     //cout<<1<<endl;
     for (int i=1; i<=q; i++)
     {
          cin>>ty;
          if (ty==1)
          {
               cin>>idx>>val;
               w=val^a[idx];
               update(1,1,n, idx, w, idx%2);
               a[idx]=val;
          }
          else
          {
               cin>>le>>ri;
               x=(ri-le+1);
               if (x%2==0)
               {
                    cout<<0<<endl;
                    continue;
               }//cout<<le<<" "<<ri<<"   ";
                    cout<<getans(1,1,n,le,ri,le%2)<<endl;
          }
          
     }
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 3 ms 384 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 3 ms 384 KB Output is correct
5 Correct 3 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 3 ms 384 KB Output is correct
7 Correct 3 ms 384 KB Output is correct
8 Correct 3 ms 384 KB Output is correct
9 Correct 3 ms 384 KB Output is correct
10 Correct 3 ms 384 KB Output is correct
11 Correct 19 ms 640 KB Output is correct
12 Correct 19 ms 640 KB Output is correct
13 Correct 23 ms 640 KB Output is correct
14 Correct 23 ms 640 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1055 ms 15136 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 3 ms 384 KB Output is correct
7 Correct 3 ms 384 KB Output is correct
8 Correct 3 ms 384 KB Output is correct
9 Correct 3 ms 384 KB Output is correct
10 Correct 3 ms 384 KB Output is correct
11 Correct 19 ms 640 KB Output is correct
12 Correct 19 ms 640 KB Output is correct
13 Correct 23 ms 640 KB Output is correct
14 Correct 23 ms 640 KB Output is correct
15 Execution timed out 1055 ms 15136 KB Time limit exceeded
16 Halted 0 ms 0 KB -