intmain() { int num[200000] ; int n , m, i; int key ; scanf("%d%d",&n,&m); for( i = 0 ; i < n ; i++ ) scanf("%d",&num[i]) ; for( i = 0 ; i < m ; i++ ) { scanf("%d",&key) ; printf("%d",BinarySearch(num,n,key)) ; if ( i != m - 1 ) printf(" ") ; elseprintf("\n") ; } return0 ; }
intBinarySearch(int a[],int n,int key) { int left = 0, right = n - 1; while (left<=right) { int mid = left + (right - left) / 2;
if (a[mid] < key) { left = mid + 1; } elseif (a[mid] > key) { right = mid - 1; } else { return mid; } } return-1; }
intRecurBinarySearch( int a[] , int key , int left , int right ) ;
intmain() { int a[MAXN]; int n , m , i , key ; scanf("%d %d",&n , &m ); for( i = 0 ; i < n ; i++ ) scanf("%d", &a[i]); for( i =0 ; i < m ; i++ ) { scanf("%d",&key); printf( "%d" , RecurBinarySearch( a , key , 0 , n - 1 ) ); if ( i != m - 1 ) printf(" ") ; elseprintf("\n") ; }
return0; }
intRecurBinarySearch( int a[] , int key , int left , int right ) { int mid = left + (right - left) / 2; if (left>right) { return-1; } elseif (a[mid]<key) { return RecurBinarySearch(a, key, mid + 1, right); } elseif (a[mid]>key) { return RecurBinarySearch(a, key, left, mid - 1); } else { return mid; } }