想知道错的原因,我的二分方法是在B站五点七边学的
求助
#include <bits/stdc++.h>
using namespace std;
const int kMaxN = 1e5 + 1;
int n, m, a[kMaxN], b[kMaxN];
bool binary_search(int x) {
int l = 0, r = n + 1;
while (l + 1 != r) {
int m = l + ((r - l) >> 1);
if (a[m] <= x)
l = m;
else
r = m;
}
if (a[l] == x)
return 1;
else
return 0;
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= m; i++) cin >> b[i];
sort(b + 1, b + 1 + m);
sort(a + 1, a + 1 + n);
for (int i = 1; i <= m; i++)
if (binary_search(b[i]))
cout << b[i] << " ";
return 0;
}