#include using namespace std; #include using namespace atcoder; using ll = long long; ll n; using TUP = tuple; ll q; ll dp[30][202020];//dp[i][j]:= 2^i解移動した時の最大の標高(未満) using P = pair; vector vtup; vector

ab; ll f_to(ll st,ll x){ for(ll i = 0;i<30;i++){ if(x>>i&1){ st = dp[i][st]; } } return st; } void solve(){ sort(vtup.begin(),vtup.end()); vector maxt(n); { vector H(n); for(ll i = 0;i H(n); for(ll i = 0;i T(n); { vector H(n); for(ll i = 0;i1){ ll mid = (ng+ok)/2; if(rH> n; vtup = vector(n); for(auto &[h,t,i]:vtup)cin >> h; for(auto &[h,t,i]:vtup)cin >> t; for(ll i = 0;i> q; ab = vector

(q); for(auto &[a,b]:ab)cin >> a >> b; for(auto &[a,b]:ab)a--,b--; solve(); }