Pagini recente » Cod sursa (job #190188) | Cod sursa (job #2066878) | Cod sursa (job #1068648) | Cod sursa (job #213983) | Cod sursa (job #325688)
Cod sursa(job #325688)
# include <stdio.h>
int a[100005],i,j,k,q,n,m,x,y,w;
int caut0 (int i,int j)
{
k=(i+j)/2;
if (a[k]>x)
return caut0 (i,k);
else
if (a[k+1]<=x)
return caut0 (k,j);
else
return k;
}
int caut1 (int i,int j)
{
k=(i+j)/2;
if (a[k]>x)
return caut1 (i,k);
else
if (a[k+1]<=x)
return caut1 (k,j);
else
return k;
}
int caut2 (int i,int j)
{
k=(i+j)/2;
if (a[k]<x)
return caut2 (k,j);
else
if (a[k-1]<x)
return k;
else
return caut2 (i,k);
}
int main ()
{
freopen ("cautbin.in","r",stdin);
freopen ("cautbin.out","w",stdout);
scanf ("%i",&n);
for (i=1;i<=n;i++)
scanf ("%i",&a[i]);
scanf ("%i",&m);
for (q=1;q<=m;q++)
{
scanf ("%i%i",&y,&x);
if (y==0)
{
w=caut0 (1,n);
if (a[w]==x)
printf ("%i\n",w);
else
printf ("-1\n");
}
if(y==1)
{
if (a[n]<=x)
printf ("%i\n",n);
else
if (a[1]==x)
printf ("1\n");
else
printf ("%i\n",caut1 (1,n));
}
if (y==2)
{
if (a[1]>=x)
printf ("1\n");
else
if (a[n]==x)
printf ("%i\n",n);
else
printf ("%i\n",caut2 (1,n));
}
}
return 0;
}