Submission #1181692

#TimeUsernameProblemLanguageResultExecution timeMemory
1181692NomioBigger segments (IZhO19_segments)C++20
100 / 100
85 ms12116 KiB
#include<bits/stdc++.h> #define s second #define f first using namespace std; using ll = long long; pair<int, ll> f(pair<int, ll> a, pair<int, ll> b) { if(a.f > b.f) return a; else if(a.f < b.f) return b; else if(a.s < b.s) return a; else return b; } int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<ll> a(n + 1), p(n + 1, 0); for(int i = 1; i <= n; i++) { cin >> a[i]; } for(int i = 1; i <= n; i++) { p[i] = p[i - 1] + a[i]; } int dp[n + 1] {}, pid[n + 2] {}; for(int i = 1; i <= n; i++) { pid[i] = max(pid[i], pid[i - 1]); dp[i] = dp[pid[i]] + 1; int x = n + 1; if(p.back() >= p[i] * 2 - p[pid[i]]) x = lower_bound(p.begin(), p.end(), p[i] * 2 - p[pid[i]]) - p.begin(); pid[x] = max(pid[x], i); } cout << dp[n] << '\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...