Submission #710384

#TimeUsernameProblemLanguageResultExecution timeMemory
710384PixelCatFish 2 (JOI22_fish2)C++14
8 / 100
31 ms6600 KiB
#include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) #define Forr(i, a, b) for(int i = a; i >= b; i--) #define F first #define S second #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define eb emplace_back #define int LL using namespace std; using LL = long long; using pii = pair<int, int>; const int MAXN = 100010; const int INF = 1e18; int a[MAXN]; int su[MAXN]; int le[MAXN]; int ri[MAXN]; int sum(int l, int r) { int res = su[r]; if(l > 0) res -= su[l - 1]; return res; } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); // =^-w-^= int n; cin >> n; For(i, 1, n) cin >> a[i]; a[0] = a[n + 1] = INF; su[0] = a[0]; For(i, 1, n + 1) su[i] = su[i - 1] + a[i]; int q; cin >> q; For(r, 1, n) { int hi = r; int lo = 0; while(hi - lo > 1) { int mi = (hi + lo) / 2; if(sum(mi, r - 1) >= a[r]) lo = mi; else hi = mi; } le[r] = lo; hi = n + 1; lo = r; while(hi - lo > 1) { int mi = (hi + lo) / 2; if(sum(r + 1, mi) >= a[r]) hi = mi; else lo = mi; } ri[r] = hi; } // For(i, 1, n) cout << le[i] << " \n"[i == n]; // For(i, 1, n) cout << ri[i] << " \n"[i == n]; vector<pii> v; For(i, 1, n) { v.eb(le[i] + 1, i); } sort(all(v)); reverse(all(v)); priority_queue<int, vector<int>, greater<int>> pq; int mx1 = 1; int mn = n; int ans = 0; For(i, 1, n) { if(i > 1) mn = max(mn, ri[i - 1]); if(mn >= n + 1) break; while(sz(v) && v.back().F <= i) { pq.emplace(v.back().S); v.pop_back(); } while(sz(pq) && pq.top() <= mn) { mx1 = max(mx1, pq.top()); pq.pop(); } mn = min(mn, mx1); if(mn <= i) ans++; // cout << i << " " << mn << " " << mx1 << "\n"; } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...