SDUT 二分查詢 迴圈

2021-08-16 19:33:01 字數 720 閱讀 6032

time limit: 600 ms

memory limit: 65536 kib

submit

statistic

problem description

給出含有n個數的公升序序列,保證序列中的數兩兩不相等,這n個數編號從1 到n。

然後給出q次詢問,每次詢問給出乙個數x,若x存在於此序列中,則輸出其編號,否則輸出-1。

input

單組輸入。首先輸入乙個整數n(1 <= n && n <= 3000000),接下的一行包含n個數。

再接下來的一行包含乙個正整數q(1 <= q && q <= 10000),表示有q次詢問。

再接下來的q行,每行包含乙個正整數x。

output

對於每次詢問,輸出乙個整數代表答案。

sample input

5

1 3 5 7 931

58

sample output

1

3-1

hint

#include__int64 a[3000000];

void initarr(__int64 a,int n)

else if(x>a[temp])

else

} printf("%d\n",k);

} return 0;

}

SDUT 2872二分查詢

time limit 600ms memory limit 65536kb submit statistic discuss problem description 給出含有n個數的公升序序列,保證序列中的數兩兩不相等,這n個數編號從1 到n。然後給出q次詢問,每次詢問給出乙個數x,若x存在於此序列...

迴圈控制 二分查詢

二分查詢思路 1 規定要查詢的值k可能在陣列arr內下標區間a,b 2 計算區間a,b的中間點m 3 若k4 若k arr m 將區間縮小為m,b,繼續二分查詢 5 若k arr m 則找到元素位於位置m 難點 邊界控制 要注意的點 關於區間的選法 半開半閉區間方便進行操作 比如說 a,b b,c ...

SDUT 2872 M 二分查詢

time limit 600ms memory limit 65536kb problem description 給出含有n個數的公升序序列,保證序列中的數兩兩不相等,這n個數編號從1 到n。然後給出q次詢問,每次詢問給出乙個數x,若x存在於此序列中,則輸出其編號,否則輸出 1。input 單組輸...