Submission #1026320

#TimeUsernameProblemLanguageResultExecution timeMemory
1026320fv3Feast (NOI19_feast)C++14
12 / 100
26 ms4812 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; vector<ll> a, b; ll mx_res; ll solve(ll pun) { ll seg_cnt = 0; mx_res = 0; ll res = -pun; ll last = 0; for (ll n : b) { if (n > 0) { last += n; mx_res = max(mx_res, res + last); continue; } if (n < -pun) { if (last > 0) { res += last; mx_res = max(mx_res, res); seg_cnt++; } last = -pun; } else { last += n; } if (last < -pun) last = -pun; } if (last > 0) { res += last; mx_res = max(mx_res, res); seg_cnt++; } return seg_cnt; } int main() { ios::sync_with_stdio(0); cin.tie(0); ll N, K; cin >> N >> K; a = vector<ll>(N); for (int i = 0; i < N; i++) cin >> a[i]; { ll sum = a[0]; for (int i = 1; i < N; i++) { if ((a[i-1] ^ a[i]) < 0) { b.push_back(sum); sum = 0; } sum += a[i]; } if (sum != 0) b.push_back(sum); } ll l = 0ll; ll r = 1000000000000000000ll; while (l < r) { ll c = (l + r) / 2ll; if (solve(c) > K) l = c + 1; else r = c; } solve(l); cout << mx_res + K * l << '\n'; 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...