您的位置:首页 > 其它

day2 POJ 2366 Sacrament of the sum

2016-07-22 09:31 381 查看
#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了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: