제출 #1349351

#제출 시각아이디문제언어결과실행 시간메모리
1349351msb.83Circle Passing (EGOI24_circlepassing)C++20
31 / 100
56 ms8712 KiB
//Rahman ve Rahim olan Allah'ın adıyla
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ins insert
#define fi first
#define se second
#define int long long
#define mid (st+end)/2
#define spc <<" "<<
#define en <<"\n"
#define amin main
const int INF=1e18;
vector<int>el;int n;
inline int ff(int k){
    return lower_bound(el.begin(),el.end(),k)-el.begin();
}
inline int dis(int l,int r){
    if(r<l) swap(l,r);
    return min(r-l,l+((2*n)-1)-r+1);
}
inline int os(int k){
    if(k+n<(2*n-1)){
        return k+n;
    }else{
        return k-n;
    }
}
int32_t amin(){
    ios_base::sync_with_stdio(false);cin.tie(0);
    int m,q,a,b;cin>>n>>m>>q;el.clear();
    for(int i=0;i<m;i++){
        cin>>a;el.pb(a);el.pb(a+n);
    }sort(el.begin(),el.end());
    for(int i=0;i<q;i++){
        cin>>a>>b;int r=ff(a),l;
        if(r==0){
            l=el.size()-1;
        }else{
            l=r-1;
        }
        cout<<min(dis(a,b),min(dis(a,el[r])+dis(os(el[r]),b)+1,dis(a,el[l])+dis(os(el[l]),b)+1))<<"\n";
        //cout<<l<<" "<<r<<"\n";
    }
}
#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...