Submission #524707

#TimeUsernameProblemLanguageResultExecution timeMemory
524707DragonO_oBigger segments (IZhO19_segments)C++17
100 / 100
71 ms16024 KiB
#include <bits/stdc++.h> using namespace std; #define x first #define y second #define pb push_back #define all(a) a.begin(), a.end() #define int long long typedef long long ll; typedef long double ld; typedef unsigned long long ull; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef vector<ll> vll; typedef vector<int> vi; typedef vector<bool> vb; typedef vector<vi> vvi; typedef vector<vll> vvll; typedef vector<pii> vpii; typedef vector<pll> vpll; const int N = 5e5 + 55; int a[N], b[N], dp[N], pref[N]; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; for (int i = 1; i <= n; ++i) { cin >> a[i]; pref[i] = pref[i - 1] + a[i]; } for (int i = 1; i <= n; ++i) { b[i] = max(b[i], b[i - 1]); dp[i] = dp[b[i]] + 1; int l = i + 1, r = n + 1; while (l < r) { int mid = (l + r) / 2; if (pref[mid] - pref[i] < pref[i] - pref[b[i]]) { l = mid + 1; } else { r = mid; } } b[l] = 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...