給你一個嚴格遞增的數列A1,A2,A3.....An(1<=n<=100000),
&下面有幾個問題的詢問數k(1<=K<=100000),
以及k個詢問的整數x,求數列中是否存在一個Ai(1<=i<=n)的值與X相等?
輸入說明 :
第一行包含兩個整數n,k分別表示數列長度以及詢問數,
第二行包含n個整數第i(1<=i<=n)個整數依序為數列中Ai的值,
第三行包含k個詢問的整數x.
輸出說明 :
對於每個詢問整數x對應一行輸出:
輸出 i 的值
其中1<=i<=n且Ai=x
若沒有這樣的i值請輸出0代替.
範例輸入 :
5 5
1 3 4 7 9
3 1 9 7 -2
範例輸出 :
2
1
5
4
0
程式碼 :
#include<stdio.h>
int binarysearch(int a[], int head, int tail, int x)
{
int mid;
while(head <= tail)
{
mid = (head + tail) / 2;
if(a[mid] < x)
head = mid + 1;
else if(a[mid] > x)
tail = mid - 1;
else
return mid;
}
return -1;
}
int main()
{
int i,x,n,k,a[100001];
while(scanf("%d %d",&n,&k)==2)
{
for(i=0; i<n; i++)
scanf("%d",&a[i]);
for(i=0; i<k; i++)
{
scanf("%d",&x);
printf("%d\n",binarysearch(a,0,n-1,x)+1);
}
}
return 0;
}
http://zerojudge.tw/ShowProblem?problemid=d732
沒有留言:
張貼留言