简洁的二分代码,然鹅才得10分。。。
#include<iostream>
using namespace std;
#define maxn 100005
typedef long long LL;
LL n, m;
LL a[maxn], b[maxn];
bool P(LL x, LL a[], LL len) {
LL L = 0, R = len - 1, mid;
if(a[L] == x || a[R] == x) return true;
while(L < R) {
mid = L + R / 2;
if(a[mid] == x) return true;
if(a[mid] <= x)
L = mid + 1;
else
R = mid - 1;
}
return false;
}
int main() {
cin >> n >> m;
for(LL i = 0; i < n; i ++)
cin >> a[i];
for(LL i = 0; i < m; i ++)
cin >> b[i];
for(LL i = 0; i < n; i ++)
if(P(a[i], b, m))
cout << a[i] << " ";
return 0;
}