欢迎光临散文网 会员登陆 & 注册

二分板子

2023-03-18 23:03 作者:仓鼠翞  | 我要投稿

//https://www.luogu.com.cn/problem/P2249?contestId=96614
#include<bits/stdc++.h>
using namespace std;
int a[1000001];
int n,m;
int q;

//二分模板!!!二分板子
int find(int x)
{
   int l=1,r=n;//左右区间
   while(l<r)
   {
       int mid = (l+r)/2;
       if(a[mid]>=x)
           r=mid;
       else
           l=mid+1;
   }
   if(a[l]==x)
       return l;
   else return -1;
}

int main()
{
   scanf("%d%d",&n,&m);
   for(int i=1;i<=n;i++)
   {
       scanf("%d",&a[i]);
   }
   //询问m次
   for(int i=1;i<=m;i++)
   {
       scanf("%d",&q);
       int ans = find(q);
       printf("%d ",ans);
   }
   return 0;
}

二分板子的评论 (共 条)

分享到微博请遵守国家法律