小埋数学,标题必须至少为 6 个字符

题面

image

代码
#include<bits/stdc++.h>
using namespace std;
long long a[1000001],b[1000001],c[1000001];
int main(){
  	ios::sync_with_stdio(false);
	int n;
	cin>>n;
	for(long long i=1;i<=n;i++)cin>>a[i];
	long long bs=1,cs=1;
	for(long long i=1;i<=n;i++){
		for(long long j=i+1;j<=n;j++){
			b[bs]=a[i]+a[j];
			bs++;
		}
	}
	for(long long i=1;i<=n;i++){
		for(long long j=i+1;j<=n;j++){
			c[cs]=fabs(a[i]-a[j]);
			cs++;
		}
	}
	for(long long i=1;i<=bs;i++){
		for(long long j=i+1;j<=cs;j++){
			if(b[i]==c[j]&&b[i]!=0&&c[j]!=0){
				cout<<"Yes";
				return 0;
			}
		}
	}
	cout<<"No";
	return 0;
}
分数

TLE70

1 个赞

请放在问题讨论区谢谢,我帮你移过去了

数据范围多少?

要用二分

O(3*n^2) ,你居然还有70分

说实话, O(n^4) 有90分(bushi)

不用二分

a+b+c=d 移项,得 a+b=d-c

然后遍历即可

二分也行

image
给你们官方正解