NYOJ 找球号(一)

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 using namespace std;
 6 
 7 int b[100010];
 8 int a[1000010];
 9 int main()
10 {
11  int n,m,i,f,r,mod,t;
12  memset(a,0,sizeof(a));
13  memset(b,0,sizeof(b));
14  scanf("%d%d",&n,&m);
15  for(i=0;i<n;i++)
16   scanf("%d",&a[i]);
17  
18   sort(a,a+n);
19  for(i=0;i<m;i++)
20   scanf("%d",&b[i]);
21  for(i=0;i<m;i++)
22  {
23         t=0;
24         f=0;r=n-1;
25         while(f<=r)
26         {
27             mod=(r+f)>>1;
28             if(a[mod]==b[i]) {t=1;break;}
29             else if(a[mod]>b[i]) r=mod-1;
30             else f=mod+1;
31         }
32     if(t) printf("YES\n");
33     else  printf("NO\n");
34     }    
35  return 0;
36 }


排序后 二分法查找

posted @ 2013-08-20 15:09  hpu张亚飞  阅读(137)  评论(0编辑  收藏  举报