#include<bits/stdc++.h>
using namespace std;
bool is_possible(int x,vector<int>stock,vector<int>cost,vector<int>required,int budget){
int totCost=0;
for(int i=0;i<stock.size();i++){
int req=x*required[i];
totCost+=max(req-stock[i],0)*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";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgaXNfcG9zc2libGUoaW50IHgsdmVjdG9yPGludD5zdG9jayx2ZWN0b3I8aW50PmNvc3QsdmVjdG9yPGludD5yZXF1aXJlZCxpbnQgYnVkZ2V0KXsKICAgIGludCB0b3RDb3N0PTA7CiAgICBmb3IoaW50IGk9MDtpPHN0b2NrLnNpemUoKTtpKyspewogICAgICAgIGludCByZXE9eCpyZXF1aXJlZFtpXTsKICAgICAgICB0b3RDb3N0Kz1tYXgocmVxLXN0b2NrW2ldLDApKmNvc3RbaV07CiAgICB9CiAgICByZXR1cm4gdG90Q29zdDw9YnVkZ2V0Owp9CgptYWluKCl7CiAgICBpbnQgbixidWRnZXQsdT0wOwogICAgY2luPj5uPj5idWRnZXQ7CiAgICB2ZWN0b3I8aW50PnN0b2NrKG4pLGNvc3QobikscmVxdWlyZWQobik7CiAgICBmb3IoaW50ICZpdDpyZXF1aXJlZCljaW4+Pml0OwogICAgZm9yKGludCAmaXQ6c3RvY2spY2luPj5pdDsKICAgIGZvcihpbnQgJml0OmNvc3QpY2luPj5pdDsKICAgIGludCBsb3c9MCxoaWdoPTFlOTsKICAgIHdoaWxlKGxvdzxoaWdoKXsKICAgICAgICBpbnQgbWlkID0gbG93KyhoaWdoLWxvdykvMjsKICAgICAgICBpZihpc19wb3NzaWJsZShtaWQsc3RvY2ssY29zdCxyZXF1aXJlZCxidWRnZXQpKXsKICAgICAgICAgICAgbG93PW1pZCsxOwogICAgICAgICAgICB1PW1pZDsKICAgICAgICB9CiAgICAgICAgZWxzZSBoaWdoPW1pZC0xOwogICAgfQogICAgY291dDw8dTw8IlxuIjsKfQ==