Submission #1133725

#TimeUsernameProblemLanguageResultExecution timeMemory
1133725Halym2007Bigger segments (IZhO19_segments)C++17
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define sz size() #define ff first #define ss second #define pb push_back #define pii pair <ll, int> #define dur exit(0) #define dur1 return(0) const int N = 5e5 + 5; ll a[N], p[N], val[N]; int dp[N]; set <pii> s; int main () { // freopen ("input.txt", "r", stdin); ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin >> n; for (int i = 1; i <= n; ++i) { cin >> a[i]; p[i] = p[i - 1] + a[i]; } for (int i = 1; i <= n; ++i) { if (!s.empty()) { auto tr = s.upper_bound ({p[i], N}); if (tr == s.begin()) { dp[i] = 1; val[i] = p[i]; } else { tr--; pii oo = *tr; dp[i] = dp[oo.ss] + 1; val[i] = p[i] - p[oo.ss]; } } else { dp[i] = 1; val[i] = a[i]; } auto tt = s.end(); while (!s.empty()) { tt--; pii oo = *tt; if (oo.ff >= p[i] + val[i]) s.erase (tt); else break; } s.insert ({p[i] + val[i], i}); } cout << dp[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...