Submission #1268637

#TimeUsernameProblemLanguageResultExecution timeMemory
1268637kawhietSecret (JOI14_secret)C++20
0 / 100
332 ms8364 KiB
#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) / 2; 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 + 2; i <= r; i++) { if (dp[m + 1][i] == -1) { dp[m + 1][i] = Secret(dp[m + 1][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 dp[l][r]; }
#Verdict Execution timeMemoryGrader output
Fetching results...