Submission #781603

#TimeUsernameProblemLanguageResultExecution timeMemory
781603Dan4LifeFish 2 (JOI22_fish2)C++17
25 / 100
4054 ms1996 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int n, q, a[100010], pr[100010]; using ar = array<int,2>; int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; for(int i = 1; i <= n; i++) cin >> a[i]; cin >> q; while(q--){ int t, l, r; cin >> t >> l >> r; if(t==1) a[l]=r; else{ stack<ar> S = stack<ar>(); int sum = 0, ind; for(int i = l; i <= r; i++)pr[i]=0; for(int i = l; i <= r; i++){ sum = 0, ind = -1; while(!S.empty() and a[S.top()[1]] < a[i]) sum+=S.top()[0]+a[S.top()[1]], S.pop(); if(sum<a[i]) ind=S.empty()?l:S.top()[1]+1; if(ind!=-1) pr[ind]++, pr[i]--; S.push({sum,i}); } S = stack<ar>(); for(int i = r; i >= l; i--){ sum = 0, ind = -1; while(!S.empty() and a[S.top()[1]] < a[i]) sum+=S.top()[0]+a[S.top()[1]], S.pop(); if(sum<a[i]) ind=S.empty()?r+1:S.top()[1]; if(ind!=-1) pr[i+1]++, pr[ind]--; S.push({sum,i}); } int ans = 0, xd=0; for(int i = l; i <= r; i++) xd+=pr[i], ans+=!xd; cout << ans << "\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...
#Verdict Execution timeMemoryGrader output
Fetching results...