Submission #1356615

#TimeUsernameProblemLanguageResultExecution timeMemory
1356615yyc000123Circle Passing (EGOI24_circlepassing)C++20
14 / 100
190 ms33428 KiB
#include<bits/stdc++.h>
using namespace std ;
const int N = 5e8+5 ;
const int M = 5e5+5 ;
const int Q = 2e4+5 ;
int n , m , q ;
set<int> st ;

int dis(int x , int y){
    return min(2*n-abs(x-y),abs(x-y)) ;
}

int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) ;
    cin >> n >> m >> q ;
    for(int i=0 ; i<m ; i++){
        int x ; cin >> x ;
        st.insert(x) ; st.insert(x+n) ;
    }
    while(q--){
        int s , t ; cin >> s >> t ;
        int ans = dis(s,t) ;
        if(s>t) swap(s,t) ;
        auto it = st.lower_bound(s) ;
        if(it!=st.end() && *it<=t) ans=min(ans,dis(s,*it)+dis((*it+n)%(2*n),t)+1) ;
        it = st.upper_bound(t) ;
        if(it!=st.begin()) it-- , ans=min(ans,dis(t,*it)+dis((*it+n)%(2*n),s)+1) ;
        cout << ans << '\n' ;
    }
    return 0 ;
}
#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...