제출 #1166774

#제출 시각아이디문제언어결과실행 시간메모리
1166774hamzabcCircle Passing (EGOI24_circlepassing)C++20
100 / 100
294 ms47496 KiB
#include <bits/stdc++.h>

using namespace std;
 
 
#define all(x) x.begin(), x.end()
#define mod 1000000007
#define sp << " " <<
#define endl << '\n'


int N, K, Q;


int round(int a){
    return min(a, N * 2 - a);
}


int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> N >> K >> Q;
    set<int> friends;
    for (int i = 0; i < K; i++){
        int k;
        cin >> k;
        friends.insert(k);
        friends.insert(k + N);
    }
    while (Q--){
        int a, b;
        cin >> a >> b;
        int l, r;
        set<int>::iterator k = friends.lower_bound(a), k2;
        if (k == friends.begin()){
            k2 = prev(friends.end());
        }else{
            k2 = prev(k);
        }
        if (k == friends.end()){
            k = friends.begin();
        }
        l = round(abs(a - *k)) + round(abs(b - (*k + N) % (2 * N)));
        r = round(abs(a - *k2)) + round(abs(b - (*k2 + N) % (2 * N)));
        cout << min(round(abs(b - a)), min(l, r) + 1) 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...