#include <bits/stdc++.h>
using namespace std;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,k;
cin >> n >> k;
int a[n];
for(int &i : a){
cin >> i;
}
auto ans = [&] (long long cos){
array<long long,2> dp[n][2];
dp[0][1]={a[0]-cos,1};
dp[0][0]={0,0};
for(int i = 1;i<n;i++){
array<long long,2> a1 = {dp[i-1][0][0]-cos+a[i],dp[i-1][0][1]+1};
array<long long,2> a2 = {dp[i-1][1][0]+a[i],dp[i-1][1][1]};
dp[i][1]=max(a1,a2);
dp[i][0]=max(dp[i-1][0],dp[i-1][1]);
}
return max(dp[n-1][0],dp[n-1][1]);
};
long long lo = 0;
long long hi = 2e18;
while(lo<hi){
long long mid = (lo+hi)/2;
if(ans(mid)[1]<=k){
hi=mid;
}
else{
lo=mid+1;
}
}
cout << ans(lo)[0]+ans(lo)[1]*lo;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |