#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){
if(l == r) return;
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]);
}
for(int i = mid + 1; i <= r; i++){
if(i == mid + 1){
prer[mid + 1][i] = a[i];
continue;
}
prer[mid][i] = Secret(prer[mid][i - 1], a[i]);
}
cmp(l, mid);
cmp(mid + 1, r);
}
int ans;
void solve(int l, int r, int l1, int r1){
if(l1 == r1) return;
int mid = (l + r) / 2;
if(!(l >= l1 && r <= r1)) return;
if(l <= mid && r > mid){
ans = Secret(prel[mid][l], prer[mid][r]);
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];
solve(l, r, 0, n - 1);
return ans;
}
// signed main()
// {
// cin.tie(0) -> sync_with_stdio(0);
// }
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |