dp[i] = min(dp[j] + time(j-->i) ) + t
ì len / vt1, len <= c
time(j-->i) = í
î c / vt1 + (len-c) / vt2, len > c
(len = p[i] - p[j])
#include <iostream>
#include <cstring>
#define D *1.0
#define mm(x, k) memset((x), (k), sizeof(x))
using namespace std;
const int N = 110;
int p[N];
double dp[N];
int main()
{
int l, c, n, t, vr, vt1, vt2;
while (~scanf("%d", &l))
{
mm(dp, 0);
scanf("%d %d %d %d %d %d", &n, &c, &t, &vr, &vt1, &vt2);
n++;
for (int i=1;i<n;++i)
scanf("%d", &p[i]);
p[n] = l;
for (int i=1;i<=n;++i)
{
double min = 0x3f3f3f3f;
for (int j=0;j<i;++j)
{
int len = p[i] - p[j];
double time = (len D/vt1);
if (len>c) time = (c D/vt1 + (len-c) D/vt2);
time += dp[j];
if (j) time += t;
if (min>time) min = time;
}
dp[i] = min;
}
if (dp[n]<l D/vr)
printf("What a pity rabbit!\n");
else
printf("Good job,rabbit!\n");
}
return 0;
}