#include<bits/stdc++.h>
using namespace std;
bool is_possible(int x,vector<int>stock,vector<int>cost,vector<int>required,int budget){
long long totCost=0;
for(int i=0;i<stock.size();i++){
long long req=x*required[i];
totCost+=max(req-stock[i],0LL)*cost[i];
}
return totCost<=budget;
}
main(){
int n,budget,u=0;
cin>>n>>budget;
vector<int>stock(n),cost(n),required(n);
for(int &it:required)cin>>it;
for(int &it:stock)cin>>it;
for(int &it:cost)cin>>it;
int low=0,high=1e9;
while(low<=high){
int mid = low+(high-low)/2;
if(is_possible(mid,stock,cost,required,budget)){
low=mid+1;
u=mid;
}
else high=mid-1;
}
cout<<u<<"\n";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgaXNfcG9zc2libGUoaW50IHgsdmVjdG9yPGludD5zdG9jayx2ZWN0b3I8aW50PmNvc3QsdmVjdG9yPGludD5yZXF1aXJlZCxpbnQgYnVkZ2V0KXsKICAgIGxvbmcgbG9uZyB0b3RDb3N0PTA7CiAgICBmb3IoaW50IGk9MDtpPHN0b2NrLnNpemUoKTtpKyspewogICAgICAgIGxvbmcgbG9uZyByZXE9eCpyZXF1aXJlZFtpXTsKICAgICAgICB0b3RDb3N0Kz1tYXgocmVxLXN0b2NrW2ldLDBMTCkqY29zdFtpXTsKICAgIH0KICAgIHJldHVybiB0b3RDb3N0PD1idWRnZXQ7Cn0KCm1haW4oKXsKICAgIGludCBuLGJ1ZGdldCx1PTA7CiAgICBjaW4+Pm4+PmJ1ZGdldDsKICAgIHZlY3RvcjxpbnQ+c3RvY2sobiksY29zdChuKSxyZXF1aXJlZChuKTsKICAgIGZvcihpbnQgJml0OnJlcXVpcmVkKWNpbj4+aXQ7CiAgICBmb3IoaW50ICZpdDpzdG9jayljaW4+Pml0OwogICAgZm9yKGludCAmaXQ6Y29zdCljaW4+Pml0OwogICAgaW50IGxvdz0wLGhpZ2g9MWU5OwogICAgd2hpbGUobG93PD1oaWdoKXsKICAgICAgICBpbnQgbWlkID0gbG93KyhoaWdoLWxvdykvMjsKICAgICAgICBpZihpc19wb3NzaWJsZShtaWQsc3RvY2ssY29zdCxyZXF1aXJlZCxidWRnZXQpKXsKICAgICAgICAgICAgbG93PW1pZCsxOwogICAgICAgICAgICB1PW1pZDsKICAgICAgICB9CiAgICAgICAgZWxzZSBoaWdoPW1pZC0xOwogICAgfQogICAgY291dDw8dTw8IlxuIjsKfQ==