Submission #1134153

#TimeUsernameProblemLanguageResultExecution timeMemory
1134153AgageldiBigger segments (IZhO19_segments)C++17
0 / 100
0 ms328 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 <int> ans; map <int,int> vis; 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]; vis[a[1]] = 1; ans.insert(a[1]); for(int i = 2; i <= n; i++) { if(a[i] >= sum[i - 1]) { dp[i] = dp[i - 1] + 1; sum[i] = a[i]; vis[a[i]] = i; ans.insert(sum[i]); continue; } int ind = 0; for(auto j : ans) { if(j <= p[i] - p[vis[j]]) ind = vis[j]; else break; } vis[p[i] - p[ind]] = i; sum[i] = p[i] - p[ind]; dp[i] = dp[ind] + 1; ans.insert(sum[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...