#include <bits/stdc++.h>
#include "secret.h"
using namespace std;
const int N = 1e3 + 5;
int n, pref[N][N], a[N];
void precalculate(int l, int r){
int mid = (l + r) / 2;
pref[mid][mid] = a[mid];
pref[mid + 1][mid + 1] = a[mid];
for (int i = mid - 1; i >= l; i--){
pref[mid][i] = Secret(pref[mid][i + 1], a[i]);
}
for (int i = mid + 2; i <= r; i++){
pref[mid + 1][i] = Secret(a[i], pref[mid + 1][i]);
}
if (l < mid) precalculate(l, mid);
if (r > mid + 1) precalculate(mid + 1, r);
}
void Init(int nn, int A[]){
n = nn;
for (int i = 0; i < n; i++) a[i] = A[i];
precalculate(0, n - 1);
}
int Query(int L, int R){
int l = 0, r = n - 1;
while (l != r){
int mid = (l + r) / 2;
if (L <= mid && mid < R) return Secret(pref[mid][L], pref[mid + 1][R]);
else if (mid == R) return pref[mid][L];
else if (mid < L) l = mid + 1;
else r = mid;
}
return pref[l][r];
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |