/*
#include <stdio.h>
int main()
{
int arr[101][101]={},i, j, n,s=0,k=0;
scanf( "%d", &n );
for( i = 0 ; i < n ; i++ )
{
for( j = 0 ; j < n ; j++ )
{
k+=1;
arr[i][j]+=k;
}
}
for( i = 0 ; i < n ; i++ )
{
for( j = 0 ; j < n ; j++ )
if ( i == 0 || i == n - 1 || j == 0 || j == n - 1 )
s+=arr[i][j];
}
printf("%d",s);
return 0;
}
이진binary 탐색search = 이분탐색
-> 데이터가 정렬되어있는 경우에,
-> 내가 원하는 값의 위치가 어딘지? 있는지? 없는지?
100개의 데이터
1 3 1 4 2 1 5 4 2 8 7 1... -> 7이 있는지??
1 1 2 3 4 5 7 8 8 9 10 11 13 ... 50 -> 7이 있는지??
1 ~ 100
-> 가운데 있는 숫자가 7이라면?
7보다 크다면? 1 ~ 49에서 찾기
7보다 작다면? 51 ~ 100에서 찾기
100 -> 50 -> 25 -> 12 -> 6 -> 3 -> 1
#include <stdio.h>
int arr[1000]={};
int bs(int s, int e, int k) // arr[s] ~arr[e] 에서 k값의 "위치" 리턴
{
int mid = (s+e)/2;
if(s>e) return -1;
if(arr[mid]==k) return mid;
else if(arr[mid]>k) return bs(s,mid-1,k);
else if(arr[mid]<k) return bs(mid+1,e,k);
}
int main()
{
printf("%d", bs(1, 100, 7)) ;
}
*/
#include <stdio.h>
int x[1000000]={};
int k(int s,int e,int u)
{
int o=(s+e)/2;
if(s>e)return -1;
if(x[o]==u)return o;
else if(x[o]>u)return k(s,o-1,u);
else if(x[o]<u)return k(o+1,e,u);
}
int main()
{
int a,b,c,d,i,j;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%d",&x[i]);
}
scanf("%d",&c);
for(i=1;i<=c;i++)
{
scanf("%d",&d);
printf("%d ",k(1,a,d));
}
}



