Submission #1187699

#TimeUsernameProblemLanguageResultExecution timeMemory
1187699petezaFeast (NOI19_feast)C++20
100 / 100
62 ms7388 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int n, k; ll qs[300005]; pair<ll, int> dp[300005]; ll l = -1e17, r = 0, mid; pair<ll, int> calcdp(ll reward) { pair<ll, int> cmx, cmxdp; for(int i=1;i<=n;i++) { dp[i] = {cmx.first + qs[i] + reward, cmx.second+1}; cmxdp = max(cmxdp, dp[i]); cmx = max(cmx, pair<ll, int>(cmxdp.first - qs[i], cmxdp.second)); } return cmxdp; } ll fl(ll a, ll b) { return a/b - ((a^b) < 0 && a%b); } int main() { cin.tie(0) -> sync_with_stdio(0); cin >> n >> k; for(int i=1;i<=n;i++) { cin >> qs[i]; qs[i] += qs[i-1]; } while(l < r) { mid = fl(l+r, 2); if(calcdp(mid).second < k) l = mid+1; else r = mid; } cout << calcdp(r).first-(r*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...