#include <bits/stdc++.h>
#include "secret.h"
using namespace std;
vector<vector<int>> dp;
void divconq(int l, int r) {
if (l == r) {
return;
}
int m = (l + r) >> 1;
for (int i = m - 1; i >= l; i--) {
if (dp[i][m] == -1) {
dp[i][m] = Secret(dp[i + 1][m], dp[i][i]);
}
}
for (int i = m + 1; i <= r; i++) {
if (dp[m][i] == -1) {
dp[m][i] = Secret(dp[m][i - 1], dp[i][i]);
}
}
divconq(l, m);
divconq(m + 1, r);
}
void Init(int N, int A[]) {
dp.resize(N, vector<int>(N, -1));
for (int i = 0; i < N; i++) {
dp[i][i] = A[i];
}
divconq(0, N - 1);
}
int Query(int l, int r) {
for (int i = l; i < r; i++) {
if (dp[l][i] != -1 && dp[i + 1][r] != -1) {
return Secret(dp[l][i], dp[i + 1][r]);
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |