Submission #1197897

#TimeUsernameProblemLanguageResultExecution timeMemory
1197897mishasimFountain (eJOI20_fountain)C++20
0 / 100
1595 ms3224 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' long long n,q,val,pos,currd; long long d[100005],v[100005],nextx[100005]; vector<int> vv; stack<int> st; int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>q; for(int i = 1 ; i<=n ; i++){ cin>>d[i]>>v[i]; } for(int i = n ; i>=1 ; i--){ while(st.size()>0 && d[st.top()]<d[i]){ st.pop(); } if(st.size()==0)nextx[i] = 0; else nextx[i] = st.top(); st.push(i); } for(int i = 1 ; i<=q ; i++){ cin>>pos>>val; int j = pos; while(j<=n){ val-=v[j]; if(val<=0){cout<<j<<endl;break;} if(nextx[j]==0){cout<<0<<endl;break;} else { if(val-v[nextx[j]]-v[nextx[nextx[j]]]-v[nextx[nextx[nextx[j]]]]>=0){ val-=v[nextx[j]]+v[nextx[nextx[j]]]+v[nextx[nextx[nextx[j]]]]; j = nextx[ nextx[ nextx[ nextx[j] ] ] ]; } else if(val-v[nextx[j]]-v[nextx[nextx[j]]]>=0){ val-=v[nextx[j]]+v[nextx[nextx[j]]]; j = nextx[ nextx[ nextx[j] ] ]; } else if(val-v[nextx[j]]>=0){ val-=v[nextx[j]]; j = nextx[ nextx[j] ]; } else {cout<<nextx[j]<<endl;break;} } } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...