Submission #540767

#TimeUsernameProblemLanguageResultExecution timeMemory
540767aminSecret (JOI14_secret)C++14
0 / 100
469 ms4788 KiB
#include "secret.h" #include<bits/stdc++.h> using namespace std; long n; long u; long a[130000]; map<pair<long,long>,long>m; void build(long v,long tl,long tr) { if(tl==tr) { return ; } long tm=(tl+tr)/2; long ans=a[tm]; for(long i=tm-1;i>=tl;i--) { ans=Secret(a[i],ans); m[{i,tm}]=ans; } ans=a[tm+1]; for(long i=tm+2;i<=tr;i++) { ans=Secret(ans,a[i]); m[{tm+1,i}]=ans; } build(v*2,tl,tm); build(v*2+1,tm+1,tr); } long get(long v,long tl,long tr,long l,long r) { long tm=(tl+tr)/2; if(r<=tm) { return get(v*2,tl,tm,l,r); } if(l>tm) { return get(v*2+1,tm+1,tr,l,r); } long ans=Secret(m[{l,tm}],m[{tm+1,r}]); return ans; } void Init(int N, int A[]) { n=N; for(long i=0;i<N;i++) { a[i]=A[i]; m[{a[i],a[i]}]=a[i]; } build(1,0,n-1); } int Query(int L, int R) { if(L==R) { return a[L-1]; } return get(1,0,n-1,L-1,R-1); }
#Verdict Execution timeMemoryGrader output
Fetching results...