(就当是为各位提供水部分分的思路
#include<cstdio>
#include<iostream>
#include<ctime>
using namespace std;
int a[(1<<20)+1];
int find(int x,int len)
{
int l=0,r=len-1,mid,cnt=0,w;
while(l<r)
{
cnt++;
w=rand()%2;
mid=(l+r+w)/2;
if(a[mid]-w<x) l=mid+!w;
else r=mid-w;
}
return cnt;
}
int main()
{
srand(time(0)+clock());
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int q;
cin>>q;
for(int i=1;i<=q;i++)
{
int x;
cin>>x;
int ans=0x3f3f3f3f;
for(int j=1;j<=40000;j++)
{
ans=min(ans,find(x,n));
}
cout<<ans<<'\n';
}
return 0;
}