#include "secret.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 1001, LOG = 10;
int P[LOG][N], S[LOG][N], a[N], n;
void build(int l, int r, int i = 0) {
if (l == r) return;
int m = (l + r)/2;
S[i][m] = a[m], P[i][m+1] = a[m+1];
for (int j = m-1; j >= l; --j) S[i][j] = Secret(a[j], S[i][j+1]);
for (int j = m+2; j <= r; ++j) P[i][j] = Secret(P[i][j-1], a[j]);
build(l, m, i+1);
build(m+1, r, i+1);
}
void Init(int NN, int A[]) {
n = NN;
for (int i = 1; i <= n; ++i) a[i] = A[i-1];
build(1, n);
}
int Query(int L, int R) {
L++, R++;
if (L == R) return a[L];
int l = 1, r = n, i = 0;
while (1) {
int m = (l + r)/2;
if (L <= m && m+1 <= R) break;
else if (R <= m)
r = m;
else
l = m+1;
++i;
}
return Secret(S[i][L], P[i][R]);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |