手写的二分106ms,调库98ms,学了半天白学了。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar(); }
while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
int a[100005];
int b[100005];
bool two_divide(int l,int r,int target){
while(l<=r){
int mid=(l+r)/2;
if(b[mid]==target){
return 1;
}
if(l==r){
return 0;
}
if(b[mid]<target){
l=mid+1;
}
else if(b[mid]>target){
r=mid;
}
}
return 0;
}
int main(){
int n=read();
int m=read();
for(int i=1;i<=n;i++){
a[i]=read();
}
for(int i=1;i<=m;i++){
b[i]=read();
}
sort(b+1,b+1+m);
for(int i=1;i<=n;i++){
if(two_divide(1,m,a[i])){
printf("%d ",a[i]);
}
}
}