This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()
int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
ll n,k;
cin>>n>>k;
ll l[n+5],r[n+5];
iota(l+1,l+n+1,1);
iota(r+1,r+n+1,1);
ll m;
cin>>m;
while(m--){
ll a,b;
cin>>a>>b;
if(a<b){
for(ll i=a;i<=min(a+k-1,b-1);i++){
r[i]=max(r[i],b);
}
}
else{
for(ll i=a;i>=max(a-k+1,b+1);i--){
l[i]=min(l[i],b);
}
}
}
vector<vector<ll>>ans(n+5,vector<ll>(n+5,-1));
for(ll i=1;i<=n;i++){
ll lc=i,rc=i,d=0;
vector<ll>v;
v.pb(i);
while(!v.empty()){
ll x=lc,y=rc;
for(ll j:v){
ans[i][j]=d;
x=min(x,l[j]);
y=max(y,r[j]);
}
d++;
v.clear();
for(ll j=lc-1;j>=x;j--){
v.pb(j);
}
for(ll j=rc+1;j<=y;j++){
v.pb(j);
}
lc=x;
rc=y;
}
}
ll q;
cin>>q;
while(q--){
ll s,t;
cin>>s>>t;
cout<<ans[s][t]<<"\n";
}
}
# | 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... |