#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) //#define ATCODER #ifdef ATCODER #include #endif typedef long long ll; typedef unsigned long long ull; #define LINF 9223300000000000000 #define LINF2 1223300000000000000 #define LINF3 1000000000000 #define INF 2140000000 //const long long MOD = 1000000007; const long long MOD = 998244353; using namespace std; #ifdef ATCODER using namespace atcoder; #endif void solve() { int n, x; scanf("%d%d", &n, &x); vector h(n), a(n), hdiff(n); int i, j; for (i = 0; i < n; i++) { scanf("%d", &h[i]); hdiff[i] = h[i] - (i==0? 0: h[i - 1]); } for (i = 0; i < n; i++) { scanf("%d", &a[i]); } double ans = (double)x * a[0]; int mina = INF; for (i = 0; i < n; i++) { if (a[i] < mina) { double sumdist = 0; double sumtime = 0; for (j = 0; j < i; j++) { double sint = (double)a[i] / a[j]; double t = asin(sint); double dist = tan(t) * hdiff[j]; sumdist += dist; sumtime += (double)hdiff[j] / cos(t) * a[j] * 2; } if (sumdist * 2 < x) { ans = min(ans, sumtime + (x - sumdist * 2) * a[i]); } } mina = min(mina, a[i]); } printf("%.10lf\n", ans); return; } int main() { #if 0 solve(); #else int T, t; scanf("%d", &T); for (t = 0; t < T; t++) { solve(); } #endif return 0; }