题好长,,,,题意就是能否在两块里各找一个数和为10000.。。。。。。。。。。。。先想到将两个数组排序,,,大加小。。。。。。。但是超时了。。。。。。。应该就想到二分,,,,也不知道二分能不能过就是试试呗,,,,反正代码也很短。。。。。。
过了、、、、、、
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include<bits/stdc++.h>
#include <string.h>
using namespace std;
int a[100001],b[100001];
int main()
{
int m,n;
scanf("%d",&n);
for(int i=0;i<n;i++) {scanf("%d",&a[i]); a[i]=10000-a[i];}
sort(a,a+n);
scanf("%d",&m);
for(int i=0;i<m;i++) scanf("%d",&b[i]);
sort(b,b+m);
int flag=0;
for(int i=0;i<m;i++)
{
if(binary_search(a,a+n,b[i])) {flag=1; }
if(flag==1) break;
}
if(flag==1) printf("YES\n");
else printf("NO\n");
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-12 22:51:23