#pragma GCC optimize ("O3")
#include <bits/stdc++.h>
using namespace std;
//------------------------------DEFINE------------------------------
//******************************************************************
#define IOS ios_base::sync_with_stdio(false); cin.tie(0),cout.tie(0)
#define ll long long
#define pb push_back
#define F first
#define S second
#define INF 1e18
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pii pair<int,int>
#define pll pair<ll,ll>
#define OK cout<<"Ok"<<endl;
#define MOD (ll)(1e9+7)
#define endl "\n"
//******************************************************************
//----------------------------FUNCTION------------------------------
//******************************************************************
ll gcd(ll a,ll b){
if(a>b) swap(a,b);
if(a==0) return a+b;
return gcd(b%a,a);
}
ll lcm(ll a,ll b){
return a/gcd(a,b)*b;
}
bool is_prime(ll n){
ll k=sqrt(n);
if(n==2) return true;
if(n<2||n%2==0||k*k==n) return false;
for(int i=3;i<=k;i+=2){
if(n%i==0){
return false;
}
}
return true;
}
//*****************************************************************
//--------------------------MAIN-CODE------------------------------
const int mxn=2e5+5,up=20;
ll t=1,n,m,p[up][mxn],sum[up][mxn];
void solve(){
cin>>n>>m;
vector<pii>vt;
vt.pb({0,0});
priority_queue<pii,vector<pii>,greater<pii>>q;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
vt.pb({x,y});
}
for(int i=1;i<=n;i++){
while(q.size()&&q.top().F<vt[i].F){
pii pq=q.top();
int u=pq.F,idx=pq.S;
p[0][idx]=i;
q.pop();
}
q.push({vt[i].F,i});
}
for(int i=1;i<=n;i++){
sum[0][i]=vt[i].S;
}
for(int i=1;i<up;i++){
for(int j=1;j<=n;j++){
p[i][j]=p[i-1][p[i-1][j]];
int id=p[i-1][j];
if(id!=0){
sum[i][j]=sum[i-1][j]+sum[i-1][id];
}
else{
sum[i][j]=INF;
}
}
}
while(m--){
int idx,k;
cin>>idx>>k;
bool ok=false;
for(int i=up-1;i>=0;i--){
if(sum[i][idx]<k){
k-=sum[i][idx];
if(k<=0){
cout<<idx<<endl;
ok=true;
break;
}
idx=p[i][idx];
}
}
if(!ok){
cout<<idx<<endl;
}
}
}
int main(){
IOS;
//cin>>t;
while(t--){
solve();
}
return 0;
}
Compilation message
fountain.cpp: In function 'void solve()':
fountain.cpp:59:17: warning: unused variable 'u' [-Wunused-variable]
59 | int u=pq.F,idx=pq.S;
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
1 ms |
724 KB |
Output is correct |
3 |
Correct |
1 ms |
852 KB |
Output is correct |
4 |
Correct |
1 ms |
852 KB |
Output is correct |
5 |
Correct |
2 ms |
980 KB |
Output is correct |
6 |
Correct |
2 ms |
980 KB |
Output is correct |
7 |
Correct |
1 ms |
852 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
234 ms |
32216 KB |
Output is correct |
2 |
Correct |
282 ms |
32756 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
584 KB |
Output is correct |
2 |
Correct |
1 ms |
724 KB |
Output is correct |
3 |
Correct |
1 ms |
852 KB |
Output is correct |
4 |
Correct |
1 ms |
852 KB |
Output is correct |
5 |
Correct |
2 ms |
980 KB |
Output is correct |
6 |
Correct |
2 ms |
980 KB |
Output is correct |
7 |
Correct |
1 ms |
852 KB |
Output is correct |
8 |
Correct |
234 ms |
32216 KB |
Output is correct |
9 |
Correct |
282 ms |
32756 KB |
Output is correct |
10 |
Correct |
1 ms |
852 KB |
Output is correct |
11 |
Correct |
88 ms |
20732 KB |
Output is correct |
12 |
Correct |
369 ms |
37996 KB |
Output is correct |
13 |
Correct |
244 ms |
37532 KB |
Output is correct |
14 |
Correct |
170 ms |
36900 KB |
Output is correct |
15 |
Correct |
149 ms |
38052 KB |
Output is correct |