可以说我是照着题解一个字母一个字母调的
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
int a[100005], b[100005];
bool find(int x){
int l = 1, r = m;
while(l <= r){
int mid = (l + r) >> 1;
if(b[mid] == a[x]) return 1;
if(b[mid - 1] < a[x] && b[mid + 1] > a[x]) return 0;
if(b[mid] > a[x]) r = mid;
else l = mid + 1;
}
return 0;
}
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for(int i = 1; i <= m; i++)
scanf("%d", &b[i]);
sort(b + 1, b + m + 1);
for(int i = 1; i <= n; i++)
if(find(i))
printf("%d ", &a[i]);
return 0;
}