NC252422. 做不出来的话,会受稻田姬的斥责啦
描述
输入描述
第一行一个正整数。
第二行个正整数
,保证两两不同。
输出描述
如果可以搭建一个好的四边形,输出,否则输出
。
示例1
输入:
4 2 3 5 10
输出:
NO
示例2
输入:
4 2 6 5 3
输出:
YES
C++(g++ 7.5.0) 解法, 执行用时: 27ms, 内存消耗: 9600K, 提交时间: 2023-05-19 20:09:47
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; const int M=4e6+10; int c[M]; int a[N]; int n; int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=1;i<=n;i++) for (int j=i+1;j<=n;j++) if (!c[a[i]+a[j]]){ c[a[i]+a[j]]=1; }else { puts("YES"); return 0; } puts("NO"); }
pypy3 解法, 执行用时: 171ms, 内存消耗: 60820K, 提交时间: 2023-05-19 20:15:14
import sys input = lambda:sys.stdin.readline().strip() def func(): n = int(input()) a = list(map(int, input().split())) a.sort() h = [0]*(4*10**6+1) for i in range(n): for j in range(i): if h[a[i]+a[j]]:return 1 h[a[i]+a[j]] = 1 if func():print('YES') else:print('NO')
C++(clang++ 11.0.1) 解法, 执行用时: 95ms, 内存消耗: 5516K, 提交时间: 2023-05-21 20:50:58
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int i,a[n],j; map<int,int>p; for(i=0;i<n;i++) { cin>>a[i]; } for(i=0;i<n;i++) for(j=i+1;j<n;j++) { if(p[a[i]+a[j]]==0)p[a[i]+a[j]]=1; else { cout<<"YES"<<endl;return 0; } } cout<<"NO"<<endl; }
Python3 解法, 执行用时: 222ms, 内存消耗: 55576K, 提交时间: 2023-05-20 08:44:17
n = int(input()) f = [0] * 5000000 a = list(map(int, input().split())) for i in range(n): for j in range(i + 1, n): if f[a[i] + a[j]]: print("YES") exit(0) f[a[i] + a[j]] = 1 print("NO")