Cod sursa(job #211180)
Utilizator | Data | 1 octombrie 2008 08:08:56 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 2.2 kb |
#include<stdio.h>
int x,n,a[100001],i,st,dr,mij,m,y,k,aux,nr;
int main ()
{
freopen ("cautbin.in","r",stdin);
freopen ("cautbin.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
scanf("%d",&m);
for(i=1;i<=m;++i)
{
if(k==0)
scanf("%d%d",&y,&x);
k=0;
++nr;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(x==a[mij])
{
nr=0;
printf("%d\n",mij);break;
}
if(x<a[mij])
dr=mij-1;
else
st=mij+1;
}
if(st>dr)
{
if(y==1 && nr<=2)
{
--x;
--i;
k=1;
}
if(y==2 && nr<=2)
{
++x;
--i;
k=1;
}
if(y==1 && nr>2)
{
nr=0;
printf("-1\n");
}
if(y==2 && nr>2)
{
nr=0;
printf("-1\n");
}
if(y==0)
{
nr=0;
printf("-1\n");
}
}
}
return 0;
}