Submission #1147324

#TimeUsernameProblemLanguageResultExecution timeMemory
1147324samiaCircle Passing (EGOI24_circlepassing)C++20
0 / 100
2110 ms429240 KiB
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
using ll = int;
int main() {
 
ll n,m,q;
cin>>n>>m>>q;
ll bestie=0;
ll b;
map<ll,ll>p;
map<ll,ll>s;

for(ll so=0;so<=2*n;so++){p[so]=-1;}
for(ll so=0;so<m;so++){
    cin>>bestie;
    b=(bestie+n)%(2*n);
  p[bestie]=b;
   p[b]=bestie;
s[bestie]=1;
    s[b]=1;
}
ll r=0;
//13
for(ll so=bestie;so<bestie+(2*n);so++){
    r=so%(2*n);

    if(p[r]==-1){
         if(r==0){ s[r]=s[2*n-1]+1; p[r]=p[2*n-1];}
       else { s[r]=s[r-1]+1; p[r]=p[r-1];}
        
    }
 
}
r=0;

for(ll so=bestie;so>=bestie-(2*n);so--){
    r=so;
    if(so<0){r=2*n+r;}
    if(s[r]!=1){
        
        if(r==(2*n)-1){
            
            if(s[r]>s[0]+1){s[r]=s[0]+1; p[r]=p[0];}
            
        }
        else {
            
            if(s[r]>s[r+1]+1){   s[r]=s[r+1]+1; p[r]=p[r+1];}
           
            //if(r==3){cout<<s[4]<<"guyiuhoj"<<endl;}
            
        }
        
    }
    
}
    

    ll x,y;
    ll ans=0;
    while(q--){
        cin>>x>>y;
        
        ans=min((2*n)-abs(y-x),abs(y-x));
        ans=min(ans, min((2*n)-abs(y-p[x]),abs(y-p[x]))+s[x]);
        cout<<ans<<endl;
    }






}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...