Submission #943453

#TimeUsernameProblemLanguageResultExecution timeMemory
943453TAhmed33Homecoming (BOI18_homecoming)C++17
0 / 100
1084 ms32616 KiB
#include <bits/stdc++.h> #include "homecoming.h" using namespace std; typedef long long ll; const int MAXN = 4e6 + 25; const ll inf = 1e12; int n, k; ll prefa[MAXN], prefb[MAXN], dp[MAXN]; void reset () { for (int i = 1; i <= 2 * n; i++) { prefa[i] = prefb[i] = dp[i] = 0; } } ll get () { for (int i = 2 * n; i >= 1; i--) { dp[i] = dp[i + 1]; for (int j = i + k; j <= 2 * n; j++) { dp[i] = max(dp[i], dp[j] + prefa[j - k] - prefa[i - 1] - (prefb[j - 1] - prefb[i - 1])); } } return dp[1]; } ll solve (int N, int K, int *A, int *B) { reset(); n = N; k = K; for (int i = 0; i < n; i++) { prefb[i + 1] = prefb[i + n + 1] = B[i]; prefa[i + 1] = A[i]; prefa[i + 1 + n] = 0; } for (int i = 2; i <= 2 * n; i++) { prefa[i] += prefa[i - 1]; prefb[i] += prefb[i - 1]; } return get(); } /* int main () { int N, K; cin >> N >> K; n = N; k = K; for (int i = 1; i <= N; i++) { cin >> prefa[i]; prefa[i + n] = 0; } for (int i = 1; i <= N; i++) { cin >> prefb[i]; prefb[i + n] = prefb[i]; } for (int i = 2; i <= 2 * N; i++) { prefa[i] += prefa[i - 1]; prefb[i] += prefb[i - 1]; } cout << get() << '\n'; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...