#include using namespace std; #define rep(i, a, n) for(int i = a; i < n; i++) #define rrep(i, a, n) for(int i = a; i >= n; i--) #define ll long long #define pii pair #define pll pair // constexpr ll MOD = 1000000007; constexpr ll MOD = 998244353; constexpr int IINF = 1001001001; constexpr ll INF = 1LL<<60; template void chmax(t&a,u b){if(a void chmin(t&a,u b){if(b> n >> h; vector a(n), b(n); rep(i, 0, n) cin >> a[i]; rep(i, 0, n) cin >> b[i]; vector acc(n+1); rep(i, 0, n) acc[i+1] = acc[i]+a[i]; vector acc_b(n+1); rep(i, 0, n) acc_b[i+1] = acc_b[i]+b[i]; vector fatigue(n+1); rep(i, 0, n) fatigue[i+1] = fatigue[i]+b[i]*(i+1); ll ok = 0, ng = 1e18; while(ng-ok > 1){ ll mid = (ok+ng)/2; bool f = false; rep(i, 0, n){ auto itr = lower_bound(acc.begin(), acc.end(), mid+acc[i]); if(itr == acc.end()) continue; ll l = i, r = itr-acc.begin(); if(h >= (fatigue[r]-fatigue[l])-(acc_b[r]-acc_b[l])*l) f = true; } if(f) ok = mid; else ng = mid; } cout << ok << endl; return 0; }