#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5+2;
int n,q,d,c,r,v,vf,aib[NMAX],sol[NMAX];
pair<int, int> a[NMAX];
int stv[NMAX];
vector<pair<int, int>> queries[NMAX];
void update(int pos, int val){
for(int i = pos; i <= n; i += (i&-i)){
aib[i] += val;
}
}
int query(int pos){
int ans = 0;
for(int i = pos; i > 0; i -= (i&-i)){
ans += aib[i];
}
return ans;
}
int range(int st, int dr){
return query(dr)-query(st-1);
}
int main()
{
cin >> n >> q;
for(int i = 1; i <= n; i++){
cin >> d >> c;
a[i] = {d, c};
}
for(int i = 1; i <= q; i++){
cin >> r >> v;
queries[r].push_back({v, i});
}
for(int i = n; i >= 1; i--){
while(vf > 0 && a[stv[vf]].first < a[i].first){
update(vf, -a[stv[vf]].second);
vf--;
}
stv[++vf] = i;
update(vf, a[i].second);
for(auto [val, idx]: queries[i]){
int st = 1, dr = vf;
int len = 0;
while(st <= dr){
int mid = (st+dr)/2;
if(range(vf-mid+1, vf) >= val){
len = mid;
dr = mid-1;
}else{
st = mid+1;
}
}
if(len == 0){
sol[idx] = 0;
}else{
sol[idx] = stv[vf-len+1];
}
}
}
for(int i = 1; i <= q; i++){
cout << sol[i] << "\n";
}
return 0;
}
Compilation message
fountain.cpp: In function 'int main()':
fountain.cpp:45:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
45 | for(auto [val, idx]: queries[i]){
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2644 KB |
Output is correct |
2 |
Incorrect |
2 ms |
2644 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
225 ms |
10060 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2644 KB |
Output is correct |
2 |
Incorrect |
2 ms |
2644 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |