关于二分p8800【卡牌】
  • 板块学术版
  • 楼主amns123
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/14 20:25
  • 上次更新2024/7/14 21:52:58
查看原帖
关于二分p8800【卡牌】
1379250
amns123楼主2024/7/14 20:25

第二次发帖;见谅。 第二天考试;

#include<bits/stdc++.h>
using namespace std;
long long int a,b,n[1001000],m[1001000],num=0,r,ans,c;
bool check(int x){
	long long sum=0;
	for(int i=1;i<=a;i++){
		if(n[i]<x){
			if(m[i]>=x-n[i])sum+=(x-n[i]);
			else return 0;
		}
	}
	return sum<=b;
}
int main(){
    cin>>a>>b;
    for(int i=1;i<=a;i++){
    	cin>>n[i];
    	r=max(r,n[i]);
	}
    for(int i=1;i<=a;i++)cin>>m[i];
	r+=b;
    long long l=1,mid;
    while(l<=r){
    	mid=(l+r)/2;
    	if(check(mid)){
    		l=mid+1;
    		ans=mid;
		}else r=mid-1;
	}
    cout<<ans;
	return 0;
}
2024/7/14 20:25
加载中...