Submission #1197054

#TimeUsernameProblemLanguageResultExecution timeMemory
1197054veehjCircle Passing (EGOI24_circlepassing)C++20
0 / 100
74 ms1860 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; vl k; ll dist(ll a, ll b){ ll ret; if(a>b) ret=min(a-b, b+2*n-a); else ret=min(b-a, a+2*n-b); return ret; } void f() { cin >> n >> m >> Q; k.resize(m); rep(i, 0, m){ cin >> k[i]; k.pb(k[i]+n); } sort(all(k)); rep(tc, 0, Q){ ll a, b; cin >> a >> b; ll bridge=lower_bound(all(k), a)-k.begin(), ans=dist(a, b); if(bridge!=sz(k) && k[bridge]==a){ ans=min(ans, dist((a+n)%(2*n), b)+1); } else { ans=min(ans, dist(a, k[bridge])+dist((k[bridge]+n)%(2*n), b)+1); bridge=(bridge-1+sz(k))%(sz(k)); ans=min(ans, dist(a, k[bridge])+dist((k[bridge]+n)%(2*n), b)+1); } cout << ans << endl; } } int main() { int tc = 5; // 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...