#include #include using namespace std; using namespace atcoder; #define ll long long #define rep(i,a,b) for(int i=(a);i<(b);i++) #define repl(i,a,b) for(ll i=(a);i<(b);i++) #define all(a) (a).begin(),(a).end() #define rall(a) (a).rbegin(),(a).rend() template bool chmin(T &a,T b){if(a>b){a=b;return true;} return false;} template bool chmax(T &a,T b){if(a> n >> k; vector a(n),b(n); rep(i,0,n) cin >> a[i]; rep(i,0,n) cin >> b[i]; int MAX=100001; vector> div(MAX); rep(p,1,MAX){ for(int q=p;q1){ ll mid=(ok+ng)/2; ll cnt=0; rep(i,0,n){ ll num=INF; rep(j,0,div[a[i]].size()){ if(div[a[i]][j]>=mid){ if(b[i]%div[a[i]][j] == 0) num=0; else chmin(num,(ll)(div[a[i]][j]-b[i]%div[a[i]][j])); } } if(num == INF){ cnt=INF; break; } else cnt+=num; } if(cnt<=k) ok=mid; else ng=mid; } cout << ok << '\n'; }