Submission #1356576

#TimeUsernameProblemLanguageResultExecution timeMemory
1356576mxhrvsCircle Passing (EGOI24_circlepassing)C++20
0 / 100
17 ms476 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);
        if(it != v.begin()) k.push_back(*(it++));
        else k.push_back(*prev(it));

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

        cout << ans << "\n";

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