-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
using ll = long long;
using pl = pair<ll, ll>;
ll C[5005], D[5005];
pl DP[5005][5005];
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
ll N, T, RA, RB;
cin >> N >> T >> RA >> RB;
for (int i = 0; i < N; ++i) cin >> C[i];
for (int i = 0; i < N; ++i) cin >> D[i];
memset(DP, 63, sizeof(DP));
DP[0][0] = pl(0, 0);
ll ans = T;
for (int i = 0; i <= N; ++i) {
for (int j = 0; j <= N; ++j) {
ll r = 1 + i * RA + j * RB;
if (i < N) {
ll t = max((C[i] + DP[i][j].s + r - 1) / r, 0ll);
DP[i + 1][j] = min(pl(DP[i][j].f + t, -t * r + C[i] + DP[i][j].s), DP[i + 1][j]);
}
if (j < N) {
ll t = max((D[j] + DP[i][j].s + r - 1) / r, 0ll);
DP[i][j + 1] = min(pl(DP[i][j].f + t, -t * r + D[j] + DP[i][j].s), DP[i][j + 1]);
}
ans = min(DP[i][j].f + max((T + DP[i][j].s + r - 1) / r, 0ll), ans);
}
}
cout << ans << '\n';
}