제출 #709741

#제출 시각아이디문제언어결과실행 시간메모리
709741surguttiHomecoming (BOI18_homecoming)C++14
100 / 100
129 ms55412 KiB
#include <bits/stdc++.h> using namespace std; #include "homecoming.h" long long solve(int N, int K, int *A, int *B) { long long cost = 0, ans = 0; for (int i = 0; i < K; i++) cost += B[i]; long long take = A[0] - cost, leave = - 1E18L; ans = max(ans, take); ans = max(ans, leave); for (int i = 1; i < N; i++) { cost -= B[i - 1]; int new_cost = 0; if (i + K - 1 < N) new_cost = B[i + K - 1]; long long now_take = max(take, leave - cost) + A[i] - new_cost; long long now_leave = max(take, leave); cost += new_cost; take = now_take; leave = now_leave; ans = max(ans, take); ans = max(ans, leave); } cost = 0; for (int i = 0; i < K; i++) cost += B[i]; take = A[0] - cost, leave = 0LL; ans = max(ans, take); ans = max(ans, leave); for (int i = 1; i < N; i++) { cost -= B[i - 1]; int new_cost = B[(i + K - 1) % N]; long long now_take = max(take, leave - cost) + A[i] - new_cost; long long now_leave = max(take, leave); cost += new_cost; take = now_take; leave = now_leave; ans = max(ans, take); ans = max(ans, leave); } 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...