Submission #1134309

#TimeUsernameProblemLanguageResultExecution timeMemory
1134309AgageldiBigger segments (IZhO19_segments)C++17
37 / 100
1592 ms3780 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define N 600005 #define pb push_back #define ff first #define ss second #define sz(s) (int)s.size() ll n, t, a[N], dp[N], p[N], sum[N]; set <pair<ll,int>> ans; int main (){ ios::sync_with_stdio(0);cin.tie(0); cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; p[i] = p[i - 1] + a[i]; } dp[1] = 1; sum[1] = a[1]; ans.insert({a[1],1}); for(int i = 2; i <= n; i++) { if(a[i] >= sum[i - 1]) { dp[i] = dp[i - 1] + 1; sum[i] = a[i]; ans.insert({sum[i],i}); continue; } dp[i] = dp[i - 1]; sum[i] = sum[i - 1] + a[i]; for(auto j : ans) { if(j.ff <= p[i] - p[j.ss]) { if(dp[i] < dp[j.ss] + 1 || dp[i] == dp[j.ss] + 1 && p[i] - p[j.ss] < sum[i]) { dp[i] = dp[j.ss] + 1; sum[i] = p[i] - p[j.ss]; } } } ans.insert({sum[i],i}); } cout << dp[n] << '\n'; }
#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...