#include <iostream>
#include <vector>
using namespace std;
const int N = 1<<17;
int d[N], c[N], pre[N], Ans[N + N];
vector<pair<int,int>> Vec[N];
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n, m;
cin>>n>>m;
for (int i=1;i<=n;i++)
cin>>d[i]>>c[i];
for (int i=1, r, v;i<=m;i++){
cin>>r>>v;
Vec[r].push_back({i, v});
}
vector<int> stk = {0, 0, 0};
for (int i=n;i>=1;i--){
while (stk.size() > 3 and d[stk.back()] <= d[i])
stk.pop_back();
pre[i] = pre[stk.back()] + c[i];
stk.push_back(i);
for (auto [id, vl] : Vec[i]){
int l = 0, r = stk.size() - 1;
while (l + 1 < r){
int mid = (l + r) / 2;
if (pre[i] - pre[stk[mid]] < vl)
r = mid;
else
l = mid;
}
Ans[id] = stk[r];
}
}
for (int i=1;i<=m;i++)
cout<<Ans[i]<<' ';
cout<<'\n';
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |