题目:P8800 卡牌
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5;
long long n,m,a[maxn],b[maxn];
bool check(long long x){
int num=0;
for(int i=1;i<=n;i++){
if(abs(a[i]-x)>b[i]) num+=0-b[i];
else if(a[i]-x<0) num+=a[i]-x;
}
if(m+num>=0) return true;
else return false;
}
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(int i=1;i<=n;i++) scanf("%lld",&b[i]);
long long l=1,r=m,ans=-1;
if(r==0) r++;
while(l<=r){
long long mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}else r=mid-1;
}
cout<<ans<<endl;
return 0;
}
本地测试正常,为什么到洛谷就WA?