#include "stdio.h" int main() { //変数を宣言し、配列はforで初期化する。 //役割は、順番に「koboの速度」「師匠の速度」「交差点の数」「交差点の位置」。 //問題では到達の可否を調べているのであって、何秒かかるとかはどうでもいいので、 //簡単化のために単位のことは忘れることにする。 int X = 0, Y = 0, N = 0; long A[90]; for (int i = 0; i < 90; i++) { A[i] = 0; } //scanfで変数の値を入力。 //AはforをN回やってとる scanf("%d %d",&X,&Y); scanf("%d",&N); for (int i = 0; i < N; i++) { scanf("%ld", &A[i]); } //交差点の間隔が最小の2点を探す。 //Hint1はその2点のスタートに近いほうの位置、Hint2はその間隔を入れる。 long Hint1 = 0, Hint2 = 100000; for (int i = 1; i < N; i++) { if (Hint2 > A[i] - A[i - 1]) { Hint1 = A[i - 1]; Hint2 = A[i] - A[i - 1]; } } //Hintの確認 //printf("%ld %ld \n", Hint1,Hint2); //Hint1に到達するのにどれだけの時間がかかるかを計算しておく。 //これは小数になることもあるのでdouble型で。 double time =((double)Hint1 / (double)X); printf("%lf \n",time); //koboがHint1の交差点に達したときの、師匠のいる位置を見て答えを出す。 //(最小の間隔だけ見ればいいだろっていうのは割と幻想、 //うまくいかなかったら各地点に対してtime出して判定すればいいかな) if ( Y * time > Hint1 + Hint2) printf("NO\n"); else printf("YES\n"); return 0; }