제출 #1266100

#제출 시각아이디문제언어결과실행 시간메모리
1266100rayan_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]; int query(int l, int r){ return pref[r] - pref[l - 1]; } int find_point(int last, int idx, int n){ int st = idx, en = n, best = -1; while(st <= en){ int mid = st + (en - st) / 2; if(query(idx, mid) >= last) en = mid - 1, best = mid; else st = mid + 1; } return best; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n, ans = 1; cin >> n; pref[0] = 0; for(int i = 1; i <= n; ++i){ cin >> a[i]; pref[i] = pref[i - 1] + a[i]; } int last = a[1]; // {6 2 , 3 9,,,, 13} for(int i = 2; i <= n; i = i){ int point = find_point(last, i, n); if(point == -1) break; int st = i, en = point - 1; while(st <= en){ int mid = st + (en - st) / 2; if(query(i, mid) + last <= query(i + 1, point)){ last = query(i + 1, point); st = mid + 1; }else{ en = mid - 1; } } i = point + 1, ans += 1; } cout << ans << "\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...