为啥只有90分。
  • 板块灌水区
  • 楼主diwuqidong
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/20 15:03
  • 上次更新2024/10/20 16:52:18
查看原帖
为啥只有90分。
1459251
diwuqidong楼主2024/10/20 15:03

原题链接:https://s2.loli.net/2024/10/04/3V6bkAfP9cslDOh.png

#include<bits/stdc++.h>
using namespace std;
long long n,d,a[20005],b[20005],s,l,r,h;
int main(){
cin>>n>>d;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)cin>>b[i];
sort(b+1,b+n+1);
for(int i=n;i>=1;i--){
	
	l=1,r=n,h=0;
	while(l<=r){
		int mid=(l+r)/2;
		if((b[mid]<=a[i]+d&&b[mid]>=a[i]-d)||(a[mid]<=b[i]+d&&a[mid]>=b[i]-d)){
			h=1;
			//cout<<mid<<" "<<i<<endl;
			break;
		}
		else r=mid-1;
	}
	if(h==0)continue;
	l=1,r=n,h=0;
	while(l<=r){
		int mid=(l+r)/2;
		if(b[mid]<=a[i]+d&&b[mid]>=a[i]-d){
			h=mid;
			l=mid+1;
		}
		else r=mid-1;
	}
	if(h!=0)s=a[i]+b[h];

	
	l=1,r=n,h=0;
	while(l<=r){
		int mid=(l+r)/2;
		if(a[mid]<=b[i]+d&&a[mid]>=b[i]-d){
			h=mid;
			l=mid+1;
		}
		else r=mid-1;
	}
	if(h!=0)
		if(a[h]+b[i]>s)
			s=a[h]+b[i];
	break;
}
if(s==0)cout<<"None";
else cout<<s;
return 0;
}

2024/10/20 15:03
加载中...