蓝桥杯练习之开花(二分法查找)

#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这组数据过了,我没有检测,代码知识参考,大佬勿喷*/

posted @ 2020-04-21 17:19  嘻嘻嘻ziixi  阅读(166)  评论(0编辑  收藏  举报