#include "secret.h"
#include<bits/stdc++.h>
using namespace std;
template<class T>void maximize(T& a, T b){
if(a < b){
a = b;
}
}
const int lim = 1e3 + 5;
int n, value[lim][lim];
void play(int l, int r){
if(l >= r){
return;
}
int m = (l + r) >> 1;
for(int i = m - 1; i >= l; i--){
if(value[i][m] == -1){
value[i][m] = Secret(value[i][i], value[i + 1][m]);
}
}
for(int i = m + 2; i <= r; i++){
if(value[m + 1][i] == -1){
value[m + 1][i] = Secret(value[m + 1][i - 1], value[i][i]);
}
}
play(l, m - 1);
play(m + 1, r);
}
void Init(int N, int A[]){
memset(value, -1, sizeof(value));
for(int i = 0; i < N; i++){
value[i][i] = A[i];
}
play(0, (n = N) - 1);
}
int Query(int l, int r){
int low = 0, high = n - 1;
while(true){
int mid = (low + high) >> 1;
if(l <= mid && r >= mid){
return r == mid ? value[l][mid] : Secret(value[l][mid], value[mid + 1][r]);
}
if(l > mid){
low = mid + 1;
}
else{
high = mid - 1;
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |