Submission #1197040

#TimeUsernameProblemLanguageResultExecution timeMemory
1197040veehjCircle Passing (EGOI24_circlepassing)C++20
0 / 100
17 ms324 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define fi first
#define se second
#define pb push_back
#define sz(a) (ll) a.size()
#define all(x) (x).begin(), (x).end()
#define rep(i, a, b) for(ll i=a; i<b; i++)
#define rrep(i, a, b) for(ll i=a; i>=b; i--)
#define vl vector<ll>
#define vpll vector<pair<ll, ll>>
#define vvl vector<vector<ll>>
#define pll pair<ll, ll>
ll n, m, Q;
vvl adj;
vl dist;

void f() {
  cin >> n >> m >> Q;
  adj.assign(n*2, vl(0));
  rep(i, 0, n*2){
    adj[i].pb((i+1)%(2*n));
    adj[i].pb((i-1+2*n)%(2*n));
  }
  rep(i, 0, m){
    ll x; cin >> x;
    adj[x].pb(x+n);
    adj[x+n].pb(x);
  }
  dist.assign(2*n, -1);
  queue<ll> q;
  dist[0]=0;
  q.push(0);
  while(!q.empty()){
    ll id=q.front();
    q.pop(); 
    for(auto& u : adj[id]){
      if(dist[u]==-1){
        dist[u]=dist[id]+1;
        q.push(u);
      }
    }
  }
  rep(i, 0, Q){
    ll a, b; cin >> a >> b;
    cout << dist[b] << endl;
  }
}

int main() {
  int tc = 1;
  // cin >> tc;
  for (int i = 1; i <= tc; i++) {
    // cout << '#' << i << endl;
    f();
    cout << 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...