제출 #1355484

#제출 시각아이디문제언어결과실행 시간메모리
1355484mxhrvsCircle Passing (EGOI24_circlepassing)C++20
31 / 100
60 ms8660 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

ll n, m, q;

ll dist(ll x, ll y) {
    ll d = abs(x - y);
    return min(d, 2 * n - d);
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> n >> m >> q;
    
    vector<ll> s;
    for(int i = 0; i < m; i++){
        ll k; cin >> k;
        s.push_back(k);
        s.push_back(k + n); 
    }
    sort(s.begin(), s.end());

    while(q--){
        ll x, y;
        cin >> x >> y;
        
        ll ans = dist(x, y);

        auto it = lower_bound(s.begin(), s.end(), x);
        
        vector<ll> v;
        if (it != s.end()) v.push_back(*it);
        if (it != s.begin()) v.push_back(*prev(it));
        else v.push_back(s.back()); 

        for (ll x1 : v) {

            ll y1 = (x1 < n) ? (x1 + n) : (x1 - n);
            
            ll mn = dist(x, x1) + 1 + dist(y1, y);
            ans = min(ans, mn);
        }

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