import java.util.*;
public class Main {
static int N,M;
static int[] classes,self;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
N = in.nextInt();
M = in.nextInt();
classes = new int[N];
self = new int[N];
for (int i=0; i<N; i++) {
classes[i]=in.nextInt();
}
for (int i=0; i<N; i++) {
self[i]=in.nextInt();
}
in.close();
long lo=0; long hi=(long)1e18; long res=-1;
while (lo<=hi) {
long mid=(lo+hi)/2;
if (works(mid)) {
res=mid;
lo=mid+1;
}else {
hi=mid-1;
}
}
System.out.println(res);
}
public static boolean works(long goal) {
long hours = ((long)N)*((long)M);
for (int i=0; i<N; i++) {
long required=goal;
if (classes[i]>self[i]) {
long needed = required/classes[i];
if (required % classes[i] != 0) {
needed++;
}
needed = Math.min(needed, M);
required = Math.max(0L, required - needed*classes[i]);
hours-=needed;
}
long needed = required/self[i];
if (required % self[i] != 0) {
needed++;
}
hours-=needed;
if (hours<0) {
return false;
}
}
return true;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |