Submission #1151472

#TimeUsernameProblemLanguageResultExecution timeMemory
1151472SyedSohaib_123Circle Passing (EGOI24_circlepassing)C++20
100 / 100
284 ms47556 KiB
#include <bits/stdc++.h>

using namespace std;

#define append push_back
#define int long long

const int N=2e5+10,LG=21;
int mod=998244353;

void solve(int tst){
    int n,m,q;
    cin>>n>>m>>q;
    set<int>s;
    for(int i=0;i<m;i++){
        int x;
        cin>>x;
        s.insert(x);
        s.insert(x+n);
    }
    while(q--){
        int a,b;
        cin>>a>>b;
        int md=abs(a-b);
        md=min(md,2*n-md);
        int x=0;
        if(a<*s.begin()){
            x=*--s.end();
        }
        else x=*--s.upper_bound(a);
        int y=(x+n)%(2*n);
        md=min({md,min(abs(a-x),2*n-abs(a-x))+1+min(abs(b-y),2*n-abs(b-y))});
        if(a>=*--s.end()){
            x=*s.begin();
        }
        else x=*s.upper_bound(a);
        y=(x+n)%(2*n);
        md=min({md,min(abs(a-x),2*n-abs(a-x))+1+min(abs(b-y),2*n-abs(b-y))});
        cout<<md<<endl;
    }
}

signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t = 1;
    // cin >> t;
    for(int i=1;i<=t;i++)
        solve(i);
}
#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...