#include <bits/stdc++.h>
#include "secret.h"
#define file(name) if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
using namespace std;
const int N = 1001;
int n;
int a[N];
int f[10][N];
void build(int l, int r, int k) {
if (l >= r)
return;
int mid = (l + r) / 2;
int crr = a[mid];
for (int i = mid; i >= l; i--) {
f[k][i] = crr;
if (i > l) crr = Secret(a[i - 1], crr);
}
crr = a[mid + 1];
for (int i = mid + 1; i <= r; i++) {
f[k][i] = crr;
if (i < r) crr = Secret(crr, a[i + 1]);
}
build(l, mid, k + 1);
build(mid + 1, r, k + 1);
}
void Init(int _n, int A[]) {
n = _n;
for (int i = 0; i < n; i++) a[i] = A[i];
build(0, n - 1, 0);
}
int Query(int l, int r) {
int L = 0, R = n - 1, k = 0;
while (1) {
int mid = (L + R) / 2;
if (l >= L && r <= R) {
if (r == mid) return f[k][l];
if (l == mid + 1) return f[k][r];
if (l <= mid && r > mid) return Secret(f[k][l], f[k][r]);
}
if (r <= mid) R = mid;
else L = mid + 1;
k++;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |