第十四届蓝桥杯打卡day27

木材

P4058 [Code+#1]木材 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

import java.io.*;
import java.util.*;
import java.math.*;
public class 木材 {
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
    static int N = (int)2e5 + 10, n;
    static long[] h = new long[N], a = new long[N];
    static long s, l;
    public static boolean check(long x) {
     long sum = s;
     for (int i = 0; i < n; i++) {
      if (h[i] + x * a[i] >= l) {
    	  sum-=h[i] + x * a[i];
      }
      if (sum <= 0) {
    	  return true;
    	  }
     }
     return false;
    }

    public static void main(String[] args) throws Exception {
     String[] str = in.readLine().split(" ");
     n = Integer.parseInt(str[0]);
     s = Long.parseLong(str[1]);
     l = Long.parseLong(str[2]);
     str = in.readLine().split(" ");
     for (int i = 0; i < n; i++) {
      h[i] = Long.parseLong(str[i]);
     }
     long left = 0, right = Math.max(s, l);
     str = in.readLine().split(" ");
     for (int i = 0; i < n; i++) {
      a[i] = Long.parseLong(str[i]);
      right = Math.max(right, (s - h[i]) / a[i] + 1);
     }
     
     while (left < right) {
      long mid = left + ((right - left) >> 1);
      if (check(mid)) {
       right = mid;
      } else {
       left = mid + 1;
      }
     }
     out.println(left);

        out.flush();
        in.close();
    }  
}

你可能感兴趣的:(蓝桥杯,java,c++)