Submission #1268644

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