Submission #1300725

#TimeUsernameProblemLanguageResultExecution timeMemory
1300725danglayloi1Fish 3 (JOI24_fish3)C++20
100 / 100
462 ms39808 KiB
#include <bits/stdc++.h> #define ii pair<int, int> #define fi first #define se second #define inf 0x3f3f3f3f3f3f3f3f using namespace std; using ll = long long; const ll mod=1e9+7; const int nx=3e5+5; int n, q; ll d, a[nx], ans[nx], nod[nx<<2], la[nx<<2]; vector<ii> f[nx]; void down(int id, int l, int r, int mid) { if(!la[id]) return; la[id<<1]+=la[id]; la[id<<1|1]+=la[id]; nod[id<<1]+=1ll*(mid-l+1)*la[id]; nod[id<<1|1]+=1ll*(r-mid)*la[id]; la[id]=0; } void update(int id, int l, int r, int u, int v, ll val) { if(l>v || r<u) return; if(l>=u && r<=v) { la[id]+=val; nod[id]+=1ll*(r-l+1)*val; return; } int mid=(l+r)>>1; down(id, l, r, mid); update(id<<1, l, mid, u, v, val); update(id<<1|1, mid+1, r, u, v, val); nod[id]=nod[id<<1]+nod[id<<1|1]; } ll get(int id, int l, int r, int u, int v) { if(l>v || r<u) return 0; if(l>=u && r<=v) return nod[id]; int mid=(l+r)>>1; down(id, l, r, mid); return get(id<<1, l, mid, u, v)+get(id<<1|1, mid+1, r, u, v); } ll solve(int i) { return a[i]-d*get(1, 1, n, i, i); } stack<int> st; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>d; for(int i = 1; i <= n; i++) cin>>a[i]; cin>>q; for(int i = 1; i <= q; i++) { int l, r; cin>>l>>r; f[r].emplace_back(l, i); } for(int i = 1; i <= n; i++) { int cur=i; while(st.size()) { int last=st.top(); ll le=solve(cur-1), ri=solve(cur); if(le<=ri) break; ll need=(le-ri-1)/d+1; update(1, 1, n, last, cur-1, need); cur=last; st.pop(); } st.push(cur); for(auto it:f[i]) if(solve(it.fi)<0) ans[it.se]=-1; else ans[it.se]=get(1, 1, n, it.fi, i); } for(int i = 1; i <= q; i++) cout<<ans[i]<<'\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...