Submission #53907

#TimeUsernameProblemLanguageResultExecution timeMemory
53907jovan_bSecret (JOI14_secret)C++17
0 / 100
698 ms8856 KiB
#include <bits/stdc++.h> #include "secret.h" using namespace std; typedef long long ll; int niz[1005]; int res[1005][2][1005]; int n; int fajnd(int l, int r, int trl, int trr){ if(r-l <= 1) return -1; int mid = (l+r)/2; if(l <= trl && trr <= r && trl <= mid && r >= mid) return mid; int x = fajnd(l, mid, trl, trr); if(x != -1) return x; return fajnd(mid+1, r, trl, trr); } void process(int l, int r){ if(r-l <= 1) return; int i = (l+r)/2; res[i][0][i] = niz[i]; res[i][1][i+1] = niz[i+1]; for(int j=i-1; j>=l; j--){ res[i][0][j] = Secret(niz[j], res[i][0][j+1]); } for(int j=i+2; j<=r; j++){ res[i][1][j] = Secret(res[i][1][j-1], niz[j]); } process(l, i); process(i+1, r); } void Init(int N, int A[]){ n = N; for(int i=0; i<N; i++) niz[i+1] = A[i]; process(1, n); } int Query(int L, int R){ L++; R++; if(L == R) return niz[L]; if(R == L+1) return Secret(niz[L], niz[R]); int i = fajnd(1, n, L, R); return Secret(res[i][0][L], res[i][1][R]); }
#Verdict Execution timeMemoryGrader output
Fetching results...