import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] course_study = new int[n];
int[] self_study = new int[n];
StringTokenizer st_course = new StringTokenizer(br.readLine());
StringTokenizer st_self = new StringTokenizer(br.readLine());
for(int i = 0; i < n; i++){
course_study[i] = Integer.parseInt(st_course.nextToken());
self_study[i] = Integer.parseInt(st_self.nextToken());
}
long b = 0;
long e = 1000000000000000100L;
while(b < e){
long mid = ((b+e+1)/2);
if(possible(mid, course_study, self_study, n, m)){
b = mid;
}else{
e = mid-1;
}
}
System.out.println(b);
}
public static boolean possible(long mid, int[] course_study, int[] self_study, int n, int m){
long total_classes = (long) n*m;
for(int i = 0; i < n; i++){
int a = course_study[i];
int s = self_study[i];
long current = mid;
long num_classes;
if(a > s){
num_classes = 0;
if((long) a*m < current){
current -= (long)a*m;
num_classes += m;
num_classes += current/s;
if(current%s != 0){
num_classes++;
}
}else{
num_classes = current/a;
if(current%a != 0) num_classes++;
}
}else{
// s >= a
num_classes = current / ((long) s);
if(current%s != 0){
num_classes++;
}
}
total_classes-=num_classes;
if(total_classes < 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... |