Submission #760789

#TimeUsernameProblemLanguageResultExecution timeMemory
760789bachhoangxuanFountain (eJOI20_fountain)C++17
100 / 100
301 ms10264 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define maxn 100005 const int inf=1e18; const int bl=320; int n,q,a[maxn],x[maxn],nxt[maxn],sum[maxn],sxt[maxn]; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> q; for(int i=1;i<=n;i++)cin >> a[i] >> x[i]; a[n+1]=x[n+1]=inf; vector<int> Max;Max.push_back(n+1); for(int i=n;i>=1;i--){ while(a[i]>=a[Max.back()]) Max.pop_back(); nxt[i]=Max.back();Max.push_back(i); } for(int i=1;i<=n;i++){ int u=i; for(int j=0;j<bl;j++){ sum[i]+=x[u]; if(u==n+1) break; else u=nxt[u]; } sxt[i]=u; } for(int i=1;i<=q;i++){ int r,v;cin >> r >> v; while(true){ if(r==n+1) break; if(sum[r]<v){ v-=sum[r]; r=sxt[r]; } else if(x[r]<v){ v-=x[r];r=nxt[r]; } else break; } if(r!=n+1) cout << r << '\n'; else cout << 0 << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...