测试样例最后一个询问输出不出来,和示例代码一样,不知道为什么。
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1000010;
int a[maxn], n, m, q;
int find(int x){
int l = 1, r = n + 1;
while(l < r){
int mid = l + ((r - 1) >> 1);
if(a[mid] >= x) r = mid;
else l = mid + 1;
}
if(a[l] == x) return l;
else return -1;
}
int main(){
scanf("%d %d",&n, &m);
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= m; i++){
cin >> q;
int ans = find(q);
printf("%d ", ans);
}
return 0;
}
输入:
- 11 3
- 1 3 3 3 5 7 9 11 13 15 15
- 1 3 6
输出:
1 2 最后一个结果一直不输出