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