Submission #690938

#TimeUsernameProblemLanguageResultExecution timeMemory
690938demetrekokhreidzeBigger segments (IZhO19_segments)C++14
100 / 100
65 ms20804 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define f first #define s second using namespace std; ll pref[500001], dp_cost[500001], dp_cnt[500001], l, r, dq[500001]; int main() { std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n; cin >> n; for (int i = 1; i <= n; ++i) { cin >> pref[i]; pref[i] += pref[i - 1]; while (r - l && pref[i] - pref[dq[l + 1]] >= dp_cost[dq[l + 1]]) l++; dp_cnt[i] = dp_cnt[dq[l]] + 1; dp_cost[i] = pref[i] - pref[dq[l]]; while (dp_cost[dq[r]] - dp_cost[i] >= pref[i] - pref[dq[r]]) r--; dq[++r] = i; } cout << dp_cnt[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...