import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static int[]a;
static int[]b;
static int n = 0;
static long m = 0;
public static void main(String[] args) throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[]s = reader.readLine().split(" ");
n = Integer.parseInt(s[0]);
m = Long.parseLong(s[1]);
a = new int[n];
b = new int[n];
String[]s1 = reader.readLine().split(" ");
for (int i = 0; i < s1.length; i++) {
a[i] = Integer.parseInt(s1[i]);
}
String[]s2 = reader.readLine().split(" ");
for (int i = 0; i < s2.length; i++) {
b[i] = Integer.parseInt(s2[i]);
}
int l = 0;
int r = 2*n;
while (l<r) {
int mid = l+r+1>>1;
if (check(mid)) {
l = mid;
}else {
r = mid-1;
}
}
System.out.println(l);
}
//1 2 3 4 5
private static boolean check(int mid) {
long temp = m;
for (int i = 0; i < n; i++) {
if (a[i]>=mid) {
continue;
}
if (mid-a[i]>temp) {//空白牌不够
return false;
}
if (mid-a[i]>b[i]) {//超过b[i]
return false;
}
if (mid-a[i]<=temp) {
temp-=(mid-a[i]);
}else {
return false;
}
}
return true;
}
}
卡牌 二分
最新推荐文章于 2025-05-28 10:48:32 发布