탑이 n개있고 높이가 h로 동일하며 1<=a<=b<=h 인 a~b에서 자유롭게 인접한 탑을 오갈 수 있다고 할 때
특정 지점 두곳 사이의 최단거리를 출력하는 문제다.
#include <iostream> #include <algorithm> #include <vector> #include <cstring> #include <string> #include <math.h> #include <string.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; ll n, h, a, b, k; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> h >> a >> b >> k; while (k--) { ll ta, fa, tb, fb; cin >> ta >> fa >> tb >> fb; ll ans = 0; if (ta > tb) swap(ta, tb); if (fa > fb) swap(fa, fb); // tb>=ta // fb>=fa if (ta == tb) { ans = fb - fa; } else if (fb >= b) { if (fa >= b) { ans = fb - b + fa - b + tb - ta; } else { ans = fb - fa + tb - ta; } } else if (fb >= a) { ans = fb - fa + tb - ta; } else { ans = a - fb + a - fa + tb - ta; } cout << ans << '\n'; } return 0; }
'codeforces > #503 div2' 카테고리의 다른 글
B. Badge (0) | 2018.08.15 |
---|