제출 #1356581

#제출 시각아이디문제언어결과실행 시간메모리
1356581mxhrvsCircle Passing (EGOI24_circlepassing)C++20
100 / 100
161 ms8692 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll n,m,q;
ll dist(ll x,ll y){
    if(x < y) swap(x,y);
    return min(x - y, 2*n - x + y);
}
signed main(){
    cin >> n >> m >> q;
    vector<ll> v;
    for(ll i = 1 ; i <= m; i ++){
        ll k;
        cin >> k;
        v.push_back(k);
        v.push_back(n + k);
    }
    sort(v.begin(),v.end());

    while(q--){
        ll x,y;
        cin >> x >> y;
        ll ans = dist(x,y);
        vector<ll> k;
        
        auto it = lower_bound(v.begin(), v.end(), x);
        
        if(it != v.end()) {
            k.push_back(*it); 
        } else {
            k.push_back(v.front()); 
        }
        
        if(it != v.begin()) {
            k.push_back(*prev(it)); 
        } else {
            k.push_back(v.back()); 
        }

        for(auto i : k){
            ans = min(ans, dist(x, i) + 1 + dist((i >= n ? i - n : i + n), y));
        }

        cout << ans << "\n";
    }
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…