제출 #521588

#제출 시각아이디문제언어결과실행 시간메모리
521588pokmui9909Feast (NOI19_feast)C++17
100 / 100
159 ms15064 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define x first #define y second ll N, K; ll A[300005]; pair<ll, ll> D[300005][2]; pair<ll, ll> f(ll lmb){ for(int i = 1; i <= N; i++){ D[i][0] = max(D[i - 1][0], make_pair(D[i - 1][1].x - lmb, D[i - 1][1].y - 1)); D[i][1] = max(D[i - 1][0], D[i - 1][1]); D[i][1].x += A[i]; } return max(D[N][0], make_pair(D[N][1].x - lmb, D[N][1].y - 1)); } int main(){ cin.tie(0) -> sync_with_stdio(false); cin >> N >> K; for(int i = 1; i <= N; i++){ cin >> A[i]; } ll L = 0, R = 3e14 + 7; while(L <= R){ ll m = (L + R) / 2; if(-f(m).y <= K) R = m - 1; else L = m + 1; } cout << f(L).x + L * K; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...