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 }
排序后 二分法查找