Submission #1131032

#TimeUsernameProblemLanguageResultExecution timeMemory
1131032AvianshFeast (NOI19_feast)C++17
100 / 100
165 ms10996 KiB
#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 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...