#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main()
{
int n,q;
cin>>n>>q;
vector<array<int,3>> events(n);
for(int i=0;i<n;i++)
{
int e,s;
cin>>s>>e;
events[i]={s,e,i};
}
sort(events.begin(),events.end());
while(q--)
{
int a,b;
cin>>a>>b;
a--;
b--;
if(a==b)
{
cout<<"0"<<endl;
continue;
}
for(int i=0;i<n;i++)
{
if(events[i][2]==a){
a=i;
break;
}
}
for(int i=0;i<n;i++)
{
if(events[i][2]==b){
b=i;
break;
}
}
/*
for(int i=0;i<n;i++)
{
if(i==a)
cout<<"a:";
if(i==b)
cout<<"b:";
cout<<events[i][0]<<" "<<events[i][1]<<" "<<events[i][2]<<endl;
}*/
int cnt=0;
int flag=0;
int j=a;
int ae=events[a][1];
int as=events[a][0];
int mx=ae;
int mxi=-1;
while(1)
{
int temp=0;
for(int i=0;i<=n;i++)
{
if(mx>=events[i][0]&&events[i][0]>=as)
{
if(i==b)
{
cout<<cnt+1<<endl;
flag=1;
break;
}
if(events[i][1]>mx)
{
temp=max(temp,events[i][1]);
}
}
}
if(flag)
{
break;
}
if(temp>mx)
{
cnt++;
mx=temp;
//cout<<mx<<endl;
}
else
{
cout<<"impossible"<<endl;
break;
}
}
}
return 0;
}
# | 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... |