#include"stdio.h"
#include"iostream"
using namespace std;
int a[50005],b[50005];
int i,n,m,k;
int flag=0;
void find(int x)
{
int l,r,mid;
l=0; r=n-1;
while(l<=r)
{
mid=(l+r)/2;
if(a[mid]==x) {flag=1; return;}
else if(a[mid]<x) l=mid+1;
else r=mid-1;
}
}
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&a[i]);
scanf("%d",&m);
while(m--)
{
scanf("%d",&k);
find(10000-k);
}
if(flag==1) printf("YES\n");
else printf("NO\n");
return 0;
}
两个有序序列,枚举一个序列在另一个序列中二分找答案即可,之前写的代码交上去总会WA,参考他人博客后,发现问题在读入过程中进行判断并中断循环会造成WA,一个比较奇怪的点,以后写题目要多注意一下,将结果判断移出循环后就可以AC了
day2 POJ 2366 Sacrament of the sum
最新推荐文章于 2020-10-23 15:17:51 发布