S飞速黑鱼崽B @ 2023-01-18 23:11:45
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main() {
int n,m;
cin>>n>>m;
for (int i=1;i<=n;i++) {
cin>>a[i];
}
for (int i=0;i<m;i++) {
int aim;
cin>>aim;
int l=1,r=n,mid;
while (l<r) {
mid=l+(r-l)/2;
if (a[mid]>=aim) {
r=mid;
} else {
l=mid+1;
}
}
if(a[r]==aim) {
cout << r << " ";
} else {
cout << -1 << " ";
}
}
return 0;
}
为什么二分会RE啊,查找应该是O(logn),边界条件应该都没问题
by Penguin_Chen @ 2023-01-18 23:27:35
数组开小了,开到10的6次方就过了 AC记录
by S飞速黑鱼崽B @ 2023-01-19 21:55:47
@Penguin_Chen 多谢 。。。我是憨憨。。。。。。