#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);
}
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 < L){
l = m + 1;
} else {
r = m;
}
}
return Secret(pre[id][L], suf[id][R]);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |