#include #include #include using namespace std; using ll = long long; using P = pair; int main(void){ ll n, k; cin >> n >> k; vector a(n), b(n); for(auto&x:a) cin >> x; for(auto&x:b) cin >> x; vector> cnt(n); for(int i=0; i=0; j--) cnt[i][j].second=min(cnt[i][j].second, cnt[i][j+1].second); } auto judge=[&](ll x){ ll ans=0; for(int i=0; ia[i]) return false; ll now=(*lower_bound(begin(cnt[i]), end(cnt[i]), P(x, 0))).second; ans+=now; } return ans<=k; }; ll left=1, right=1e11; while(right-left>1){ ll mid=(left+right)/2; if(judge(mid)) left=mid; else right=mid; } cout << left << endl; return 0; }