Submission #1187539

#TimeUsernameProblemLanguageResultExecution timeMemory
1187539vibhasSelf Study (JOI22_ho_t2)Java
100 / 100
386 ms75652 KiB
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    static long n, m;
    static long[] v, v2;
    static final long INF = 1000000000000000099L;

    static boolean czy(long x) {
        long a = 0;
        for (int i = 0; i < n; i++) {
            v[i] = Math.max(v[i], v2[i]);
            if (m * v[i] >= x) {
                a += (x + v[i] - 1) / v[i];
            } else {
                a += m + (x - m * v[i] + v2[i] - 1) / v2[i];
            }
            if (a > INF) return false;
        }
        return a <= m * n;
    }

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());

        v = new long[(int) n];
        v2 = new long[(int) n];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            v[i] = Integer.parseInt(st.nextToken());
        }
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            v2[i] = Integer.parseInt(st.nextToken());
        }

        long pocz = 0;
        long kon = INF;

        while (pocz != kon) {
            long mid = (pocz + kon + 1) / 2;
            if (czy(mid)) {
                pocz = mid;
            } else {
                kon = mid - 1;
            }
        }

        System.out.println(pocz);
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...