제출 #1338765

#제출 시각아이디문제언어결과실행 시간메모리
1338765athenaCircle Passing (EGOI24_circlepassing)C++20
31 / 100
48 ms556 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long int
int dist(int a,int b,int n)
{
  return min(abs(a-b),abs(2*n-abs(a-b)));
}
int32_t main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n,m,q;
    cin>>n>>m>>q;
    
  //  vector<int> f(2*n,-1);
 //   vector<int> ks(m);
int fri=0;
int mn=1e18,mx=0;
    for(int i=0;i<m;i++) {
        int k;cin>>k;
        mn=min(k,mn);
        mx=max(k,mx);
        //ks[i]=k;//friend having ppl
        //fri=k+n;
       // f[k]=k+n;
        //f[k+n]=k;
    }
    while(q--){
        int x,y;
        cin>>x>>y;
        int ans=dist(x,y,n);//direct
        //send to friends
        //using one friend takes us halfway
        //so using 2 friends takes us back to where we came from
        //whats the closest friend to 0 (back and front) (min and max)
            //for (int k:ks) {
            int a=mn,b=mn+n;
            ans=min(ans,dist(x,a,n)+1+dist(b,y,n));
            ans=min(ans,dist(x,b,n)+1+dist(a,y,n));
             a=mx,b=mx+n;
            ans=min(ans,dist(x,a,n)+1+dist(b,y,n));
            ans=min(ans,dist(x,b,n)+1+dist(a,y,n));
        //}
        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...