#include<bits/stdc++.h>
using namespace std;
struct help
{
int l,r,i;
help(){}
help(int _l,int _r,int _i)
{
l=_l;
r=_r;
i=_i;
}
};
int n,q;
help a[100001],b[100001];
vector<help> e[100001];
void read()
{
cin>>n>>q;
for(int i=1;i<=n;i++)
{
cin>>a[i].l>>a[i].r;
a[i].i=i;
}
for(int i=1;i<=q;i++)
{
cin>>b[i].l>>b[i].r;
b[i].i=i;
e[b[i].r].push_back(b[i]);
}
}
bool cmpr(help h1,help h2)
{
if(h1.r==h2.r)return h1.l<h2.l;
return h1.r<h2.r;
}
vector<help> v[200001];
int nxt[200001];
int ans[200001];
int p[200001];
int id[200001];
int g[200001][256];
bool cmpnorm(help h1,help h2)
{
return h1.i<h2.i;
}
void solve()
{
sort(a+1,a+n+1,cmpr);
p[n+1]=1e9;
for(int i=n;i>=1;i--)
{
p[i]=min(p[i+1],a[i].l);
if(p[i]==a[i].l)id[i]=i;
else id[i]=id[i+1];
//cout<<p[i]<<" ";
int l=i,r=n;
while(l<=r)
{
int m=(l+r)/2;
if(p[m]<=a[i].r)
{
g[a[i].i][0]=a[id[m]].i;
l=m+1;
}
else r=m-1;
}
}
//cout<<endl;
/*for(int i=1;i<=n;i++)
{
cout<<i<<" -> "<<g[i][0]<<endl;
}*/
for(int lg=1;lg<=20;lg++)
{
for(int i=1;i<=n;i++)
{
g[i][lg]=g[g[i][lg-1]][lg-1];
}
}
sort(a+1,a+n+1,cmpnorm);
for(int i=1;i<=q;i++)
{
int x=b[i].l,y=b[i].r;
if(x==y)
{
cout<<0<<endl;
continue;
}
if(a[x].r==a[y].r)
{
cout<<1<<endl;
continue;
}
int cnt=0;
for(int j=20;j>=0;j--)
{
if(g[x][j]&&a[g[x][j]].r<a[y].r)
{
x=g[x][j];
cnt+=(1<<j);
}
}
//cout<<x<<" + "<<y<<endl;
if(g[x][0]==0||a[x].r>a[y].r)cout<<"impossible"<<endl;
else cout<<cnt+1<<endl;
}
}
int main()
{
read();
solve();
return 0;
}
/*
6
5
8 9
5 8
9 12
1 3
2 3
10 13
1 3
2 5
1 6
4 5
3 4
4 3
1 5
2 7
3 9
8 10
1 2
1 3
1 4
*/
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |