제출 #117081

#제출 시각아이디문제언어결과실행 시간메모리
117081BruteforcemanHomecoming (BOI18_homecoming)C++11
31 / 100
1060 ms25564 KiB
#include "bits/stdc++.h" #include "homecoming.h" using namespace std; const long long inf = 1e17; long long S[2000010]; long long dp[2][2000010]; long long solve(int N, int K, int *A, int *B) { long long all = 0; for(int i = 0; i < N; i++) { all += A[i] - B[i]; } long long ans = all; long long sum = 0; for(int i = 0; i < K; i++) { sum += B[i]; } for(int i = 0; i < N; i++) { S[i] = sum; sum += B[(i + K) % N] - B[i]; } for(int i = 0; i < N; i++) { dp[0][i] = 0; dp[1][i] = -inf; for(int j = 1; j < N; j++) { int id = (i + j) % N; int prev = (id + N - 1) % N; dp[0][id] = max(dp[0][prev], dp[1][prev]); dp[1][id] = max(dp[0][prev] + A[id] - S[id], dp[1][prev] + A[id] - B[(id + K - 1) % N]); } ans = max(ans, dp[0][(i + N - 1) % N]); ans = max(ans, dp[1][(i + N - 1) % N]); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...