Submission #1224646

#TimeUsernameProblemLanguageResultExecution timeMemory
1224646asli_bgCircle Passing (EGOI24_circlepassing)C++20
0 / 100
191 ms36216 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

#define fi first
#define se second
#define pb push_back
#define sp <<' '<<

#define FOR(i,a) for(int i=0;i<(a);i++)
#define FORE(i,a,b) for(int i=(a);i<(b);i++)

#define cont(x) for(auto el:x) cout<<el<<endl;
#define contp(x) for(auto el:x) cout<<el.fi<<'-'<<el.se<<' ';cout<<endl;
#define DEBUG(x) cout<<#x sp x<<endl;

#define mid (l+r)/2

typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<pii> vii;
typedef vector<bool> vb;

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    int n,m,q;
    cin>>n>>m>>q;

    vi a(m);

    set<int> s1;

    FOR(i,m){
        cin>>a[i];
        s1.insert(a[i]);
        s1.insert(a[i]+n);
    }

    while(q--){
        int x,y;
        cin>>x>>y;
        if(x>y) swap(x,y);
        //x küçük olan, y büyük olan
        int ans=min(y-x,2*n-(y-x));

        FOR(i,1){
            if(s1.count(x)){
                int deg=1;
                deg+=min(abs(x+n-y),2*n-abs(x+n-y));
                ans=min(ans,deg);
            }
            if(1){
                auto it=s1.upper_bound(x);
                if(it==s1.end()) it=s1.begin();
                if(it!=s1.end()){
                    int deg=1;
                    deg+=min(abs(*it-x),2*n-abs(*it-x));
                    deg+=min(abs(*it+n-y),2*n-abs(*it+n-y));
                    ans=min(ans,deg);
                }

                if(it==s1.begin()){
                    it=s1.end();
                    it--;
                }
                if(it!=s1.begin()){
                    it--;
                    int deg=1;
                    deg+=min(abs(*it-x),2*n-abs(*it-x));
                    deg+=min(abs(*it+n-y),2*n-abs(*it+n-y));
                    ans=min(ans,deg);
                }
            }
        }

        cout<<ans<<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...