Submission #1161646

#TimeUsernameProblemLanguageResultExecution timeMemory
1161646nhphucSecret (JOI14_secret)C++20
0 / 100
334 ms4504 KiB
#include <bits/stdc++.h> #include "secret.h" using namespace std; int n, a[1007], pre[15][1007], suf[15][1007]; void build (int id, int l, int r){ if (l >= r){ return; } int m = l + r >> 1; pre[id][m] = a[m]; suf[id][m + 1] = a[m + 1]; for (int i = m - 1; i >= l; --i){ pre[id][i] = Secret(pre[id][i + 1], a[i]); } for (int i = m + 2; i <= r; ++i){ suf[id][i] = Secret(suf[id][i - 1], a[i]); } build(id + 1, l, m); build(id + 1, m + 1, r); return; } void Init (int N, int A[]){ n = N; for (int i = 1; i <= n; ++i){ a[i] = A[i - 1]; } build(1, 1, n); return; } int Query (int L, int R){ int l = 1, r = n, id = 0; ++L; ++R; if (L == R){ return a[L]; } while (true){ ++id; int m = l + r >> 1; if (L <= m && m < R){ break; } if (m >= R){ r = m; } else { l = m + 1; } } return Secret(pre[id][L], suf[id][R]); }
#Verdict Execution timeMemoryGrader output
Fetching results...