链接:P1571 眼红的Medusa - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:使用快排和二分思想
ps:自己从十分到二十分再到一百分,所以想发一下,纪念一下,嘿嘿,蒟蒻一个不喜勿喷,
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 100009
ll n,m,a[maxn],b[maxn],c[10005];
bool search_1(ll x,ll l,ll r)
{
ll mid;
while(l<=r)
{
mid=(l+r)/2;
if(b[mid]==x)
return 1;
else if(x<b[mid])
r=mid-1;
else
l=mid+1;
}
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);//重点只用对b排序,不然只得二十分你,说多都是痛
for(int i=1;i<=n;i++) //对a数组进行遍历
if(search_1(a[i],1,m)) //使用二分
cout<<a[i]<<" "; //返回真直接输出,不用担心排序问题,因为b已经排完序啦
return 0;
}