rt,不知道原因。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define int long long
using namespace std;
const int N = 3e5 + 5;
int n, m, ans, f[N], a[N], b[N], s[N];
int l, r;
bool check(int x){
int cnt = 0;
for(int i = 1; i <= n; i++){
if(f[i] > x) cnt += (f[i] - x)/a[i];
if(f[i] < x) cnt -= (x-1-f[i])/b[i] + 1;
}
if(cnt >= 0) return 1;
return 0;
}
signed main(){
scanf("%lld%lld", &n, &m);
for(int i = 1; i <= n; i++) scanf("%lld", &a[i]);
for(int i = 1; i <= n; i++) scanf("%lld", &b[i]), a[i] = max(a[i], b[i]);
for(int i = 1; i <= n; i++){
f[i] = a[i]*m;
r = max(r, f[i]);
}
r += 10;
while(l <= r){
int mid = (l + r) >> 1;
if(check(mid)) l = mid + 1, ans = mid;
else r = mid - 1;
}
printf("%lld", ans);
return 0;
}