#include using namespace std; #include using namespace atcoder; #define rep(i,n) for (int i = 0; i < (n); ++i) using ld = long double; using ll = long long; template bool chmax(T &a, T b) { if(a bool chmin(T &a, T b) { if(a>b) { a = b; return true; } return false; } int N, H, A[1<<18], B[1<<18]; using P = pair; int main() { cin >> N >> H; rep(i,N) cin >> A[i]; rep(i,N) cin >> B[i]; vector S(N+1); rep(i,N) S[i+1] = S[i]+B[i]; deque

q; ll a = 0, b = 0, ans = 0; int l = 0; rep(i,N) { q.push_back({A[i], B[i]}); a += A[i]; b += B[i]*(ll)q.size(); while(b>H && !q.empty()) { auto [x,y] = q.front(); q.pop_front(); a -= x; b -= S[i+1]-S[l++]; } //cout << a << " " << b << endl; chmax(ans, a); } cout << ans << endl; }