제출 #1266109

#제출 시각아이디문제언어결과실행 시간메모리
1266109rayan_bdBigger segments (IZhO19_segments)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int mxN = 5e5 + 100; int a[mxN], pref[mxN]; pair<int, int> dp[mxN]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; pref[0] = 0; for(int i = 1; i <= n; ++i){ cin >> a[i]; pref[i] = pref[i - 1] + a[i]; } auto _mrg = [&](int i, int j){ if(dp[i].first == dp[j].first + 1) dp[i] = min(dp[i], dp[j]); else dp[i] = max(dp[i], dp[j]); dp[i].first += 1; }; auto query = [&](int l, int r){ return pref[r] - pref[l - 1]; }; for(int i = 1; i <= n; ++i){ dp[i] = dp[i - 1]; dp[i].second += a[i]; int st = 1, en = i; while(st <= en){ int mid = st + (en - st) / 2; if(dp[mid - 1].second <= query(mid, i)){ _mrg(i, mid - 1); st = mid + 1; }else{ en = mid - 1; } } } cout << dp[n].first << "\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...