Submission #938941

#TimeUsernameProblemLanguageResultExecution timeMemory
938941LilypadFeast (NOI19_feast)C++14
100 / 100
206 ms12876 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define pii pair<ll,ll>
#define fi first
#define se second

const int MAXN= 3e5+5;

int N, K, A[MAXN], op;
pii dp[MAXN];
ll pref[MAXN];

// A : ambil K gratis
// B : ambil berapapun bayar

ll f(ll cost) {
    pii m;
    for (int i=1;i<=N;i++) {
        dp[i] = max(dp[i-1], {m.fi+pref[i]-cost,m.se-1});
        m = max(m,{dp[i].fi-pref[i],dp[i].se});
    }
    op = -dp[N].se;
    return dp[N].fi;
}

signed main() {
    cin>>N>>K;
    for (int i=1;i<=N;i++) {
        cin>>A[i];
        pref[i] = pref[i-1] + A[i];
    }
    ll L=0, R=1e15, mid, res;
    while (L<=R) {
        mid=(L+R)/2;
        f(mid);
        if (op <= K) {
            res = mid;
            R = mid-1;
        }
        else {
            L = mid+1;
        }
    }
    cout<<f(res)+res*K<<endl;
}

Compilation message (stderr)

feast.cpp: In function 'int main()':
feast.cpp:46:21: warning: 'res' may be used uninitialized in this function [-Wmaybe-uninitialized]
   46 |     cout<<f(res)+res*K<<endl;
      |                  ~~~^~
#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...