AtCoder Regular Contest 054 A - 動く歩道
問題について考えたこと
時計回りと反時計回りの両方を計算して、比較することにしました。
動く歩道なので、高橋君の移動速度YがXを上回らないと反時計回りはできません。
移動距離もSとDの大小関係と移動方向で計算しました。
#define _GIBCXX_DEBUG #include <bits/stdc++.h> using namespace std; #define rep(i, n) for (int i = 0; i < (n); ++i) #define all(v) v.begin(), v.end() using namespace std; using ll = long long; template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } int main(void) { int L, X, Y, S, D; cin >> L >> X >> Y >> S >> D; int dist = 0; // 時計回り if (S <= D) dist = D - S; else dist = L - S + D; double ans = (double)(dist) / (double)(X + Y); // 反時計回り if (Y - X > 0) { if (S <= D) dist = L - D + S; else dist = S - D; chmin(ans, (double)(dist) / (double)(Y - X)); } cout << fixed << setprecision(10); cout << ans << endl; return 0; }