二分板子
//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;//左右區(qū)間
? ?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;
}
標(biāo)簽: