Submission #877479

#TimeUsernameProblemLanguageResultExecution timeMemory
877479serkanrashidSecret (JOI14_secret)C++14
0 / 100
384 ms4528 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; const int maxn = 1024; int n,a[maxn]; int pref[maxn][16],suff[maxn][16]; int idx; void query(int l, int r, int lvl, int L, int R) { int mid = (l+r)/2; if(L<=mid&&mid<=R) { idx = lvl; return; } if(R<mid) query(l,mid+0,lvl+1,L,R); else query(mid+1,r,lvl+1,L,R); } int Query(int L, int R) { L++; R++; idx = 0; query(1,n,1,L,R); int ans = pref[L][idx]; if(L!=R) ans = Secret(ans,suff[R][idx]); return ans; } void divide(int l, int r, int lvl) { int mid = (l+r)/2; pref[mid][lvl] = a[mid]; for(int i=mid-1;i>=l;i--) pref[i][lvl] = Secret(a[i],pref[i+1][lvl]); if(mid!=r) suff[mid+1][lvl] = a[mid+1]; for(int i=mid+2;i<=r;i++) suff[i][lvl] = Secret(suff[i-1][lvl],a[i]); if(l==r) return; divide(l,mid+0,lvl+1); divide(mid+1,r,lvl+1); } void Init(int N, int A[]) { n = N; for(int i=1;i<=n;i++) a[i] = A[i-1]; divide(1,n,1); } /*int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...