#include "bits/stdc++.h"
#include "secret.h"
using namespace std;
// #define int long long
const int maxn = 1e3 + 5;
int n, a[maxn];
int prel[maxn][maxn], prer[maxn][maxn];
void cmp(int l, int r){
int mid = (l + r) / 2;
for(int i = mid; i >= l; i--){
if(i == mid){
prel[mid][i] = a[i];
continue;
}
prel[mid][i] = Secret(a[i], prel[mid][i + 1]);
}
for(int i = mid + 1; i <= r; i++){
if(i == mid + 1){
prer[mid][i] = a[i];
continue;
}
prer[mid][i] = Secret(a[i], prer[mid][i - 1]);
}
if(l == mid) return;
cmp(l, mid);
cmp(mid + 1, r);
}
int ans;
void solve(int l, int r, int l1, int r1){
int mid = (l + r) / 2;
if(l1 > r || r1 < l) return;
if(l1 <= mid && r1 > mid){
ans = Secret(prel[mid][l1], prer[mid][r1]);
return;
}
solve(l, r, l1, mid);
solve(l, r, mid + 1, r1);
}
void Init(int tmpn, int tmpa[]){
n = tmpn;
for(int i = 0; i < n; i++) a[i] = tmpa[i];
cmp(0, n - 1);
}
int Query(int l, int r){
ans = 0;
if(l == r) return a[l - 1];
solve(l - 1, r - 1, 0, n - 1);
return ans;
}
// signed main()
// {
// cin.tie(0) -> sync_with_stdio(0);
// }
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |