Submission #1203834

#TimeUsernameProblemLanguageResultExecution timeMemory
1203834VMaksimoski008Secret (JOI14_secret)C++20
100 / 100
346 ms8304 KiB
#include "secret.h" #include <bits/stdc++.h> using namespace std; int dat[1005][1005], a[1005], n; void dnc(int l, int r) { if(l >= r) return ; int m = (l + r) / 2; dat[m][m] = a[m]; dat[m+1][m+1] = a[m+1]; for(int i=m-1; i>=l; i--) dat[i][m] = Secret(a[i], dat[i+1][m]); for(int i=m+2; i<=r; i++) dat[m+1][i] = Secret(dat[m+1][i-1], a[i]); dnc(l, m); dnc(m+1, r); } int query(int tl, int tr, int l, int r) { int m = (tl + tr) / 2; if(l <= m && m < r) return Secret(dat[l][m], dat[m+1][r]); if(l > m) return query(m+1, tr, l, r); return query(tl, m, l, r); } void Init(int N, int A[]) { n = N; for(int i=0; i<N; i++) a[i] = A[i]; dnc(0, n-1); } int Query(int L, int R) { return (L == R ? a[L] : query(0, n-1, L, R)); }
#Verdict Execution timeMemoryGrader output
Fetching results...