給你一個嚴格遞增的數列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
沒有留言:
張貼留言