M 二分查詢

2021-08-18 09:02:00 字數 1154 閱讀 8233

time limit: 600 ms

memory limit: 65536 kib

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

法一:

#includeint a[3000001];  //runtime error 要不然是陣列開大,要不然就是陣列開小

int bch(int a, int left, int right, int k)

else if(a[mid] > k)

else

}return -1;

}int main(void)

scanf("%d", &q);

for(i = 1; i <= q; i++)

return 0;

}

法二: 即使是定義的有返回值函式但是無返回值也是會ac

#include

int a[3000001];

int find(int a, int l, int r, int x)

//這裡不能加等號例如3

1 2 321

若加了等號則返回的是-1

else if(a[mid] == x)

else if(a[mid] > x)

else if(a[mid] < x)

}int main(void)

scanf("%d", &q);

for(i = 1; i <= q; i++)

return 0;

}

M 二分查詢

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

M 二分查詢

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

M 二分查詢

submit statistic problem description 給出含有n個數的公升序序列,保證序列中的數兩兩不相等,這n個數編號從1 到n。然後給出q次詢問,每次詢問給出乙個數x,若x存在於此序列中,則輸出其編號,否則輸出 1。input 單組輸入。首先輸入乙個整數n 1 n n 300...