Submission #877493

#TimeUsernameProblemLanguageResultExecution timeMemory
877493serkanrashidSecret (JOI14_secret)C++14
0 / 100
379 ms13060 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 query(int l, int r, int lvl, int L, int R) { if(l>r) return 0; int mid = (l+r)/2; if(L<=mid&&mid<=R) { int chis = pref[L][lvl]; if(R!=mid) chis = Secret(chis,suff[R][lvl]); return chis; } if(R<mid) return query(l,mid-1,lvl+1,L,R); return query(mid+1,r,lvl+1,L,R); } int Query(int L, int R) { L++; R++; int ans = query(1,n,1,L,R); 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-1,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...