蓝桥杯练习之开花(二分法查找)
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
#define MAX 10000
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int wen[MAX],ti[MAX];
int l,r,mid;
for(int i=1;i<=n;i++)
{
cin>>wen[i];
}
for(int i=1;i<=m;i++)
{
cin>>ti[i];
}
sort(ti,ti+m);
for(int i=1;i<=n;i++)
{ r=0;l=m-1;
while(r<=l)
{
mid=(r+l)/2;
if(wen[i]==ti[mid])
{
cout<<wen[i]<<' ';
break;
}
else if(wen[i]>ti[mid])
{
r=mid+1;
}
else if(wen[i]<ti[mid])
{
l=mid-1;
}
}
}
return 0;
}
/*4 4
5 1 7 3
2 4 3 1这组数据过了,我没有检测,代码知识参考,大佬勿喷*/