Pagini recente » Cod sursa (job #211159) | Cod sursa (job #2924778) | Cod sursa (job #1236182) | Cod sursa (job #288124) | Cod sursa (job #1280556)
#include <cstdio>
using namespace std;
int n,m,i,j,x;
int v[100001];
int C_B_0(int x)
{
int st=1,dr=n,med;
while(st<=dr)
{
med=st+dr;
med/=2;
if(v[med]<=x)
st=med+1;
else
dr=med-1;
}
med=st+dr;
med/=2;
if(v[med]!=x)
return -1;
return med;
}
int C_B_1(int x)
{
int st=1,dr=n,med;
while(st<=dr)
{
med=st+dr;
med/=2;
if(v[med]<=x)
st=med+1;
else
dr=med-1;
}
med=st+dr;
med/=2;
if(v[med]!=x)
return -1;
return med;
}
int C_B_2(int x)
{
int st=1,dr=n,med;
while(st<=dr)
{
med=st+dr;
med/=2;
if(v[med]<x)
st=med+1;
else
dr=med-1;
}
med=st+dr;
med/=2;
return med+1;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(i = 1 ;i <= n; i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(i = 1; i <= m; i++)
{
int tip;
scanf("%d%d",&tip,&x);
if(tip==0) printf("%d\n",C_B_0(x));
if(tip==1) printf("%d\n",C_B_1(x));
if(tip==2) printf("%d\n",C_B_2(x));
}
return 0;
}