#include "secret.h"
constexpr int V = 1E3;
int f[V][V], n;
void Divide(int l, int r, int A[]) {
if (r - l == 1) {
f[l][l] = A[l];
return;
}
int m = (l + r) / 2;
f[m][m - 1] = A[m - 1];
for (int i = m - 2; i >= l; i--) {
f[m][i] = Secret(A[i], f[m][i + 1]);
}
f[m][m] = A[m];
for (int i = m + 1; i < r; i++) {
f[m][i] = Secret(f[m][i - 1], A[i]);
}
Divide(l, m, A);
Divide(m, r, A);
}
void Init(int N, int A[]) {
n = N;
Divide(0, n, A);
}
int Query(int L, int R) {
int a = 0, b = n;
while (b - a > 1) {
int m = (a + b) / 2;
if (L < m && m <= R) {
return Secret(f[m][L], f[m][R]);
}
if (L >= m) {
a = m;
}
else {
b = m;
}
}
return f[a][a];
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |