Pagini recente » Cod sursa (job #2217633) | Cod sursa (job #994416) | Cod sursa (job #1223612) | Cod sursa (job #2469150) | Cod sursa (job #211228)
Cod sursa(job #211228)
#include<stdio.h>
int n,a[100001],st,dr,mij,m;
void show (int v)
{
switch (v)
{
case 1:printf("-1\n");break;
case 2:printf("%d\n",mij);break;
case 3:printf("%d\n",dr);break;
case 4:printf("%d\n",st);break;
}
}
int solve (int y,int x,int aux)
{
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(x==a[mij])
{
show (2);
return 0;
}
if(x==a[dr])
{
show (3);
return 0;
}
if(x==a[st])
{
show (4);
return 0;
}
if(x<a[mij])
dr=mij-1;
else
st=mij+1;
}
if(y==1 && aux==x)
solve(y,x-1,aux);
if(y==2 && aux==x)
solve(y,x+1,aux);
if(y==1 && aux!=x)
show (1);
if(y==2 && aux!=x)
show (1);
if(y==0)
show (1);
}
void read ()
{
int i,x,y;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
scanf("%d",&m);
for(i=1;i<=m;++i)
{
scanf("%d%d",&y,&x);
solve(y,x,x);
}
}
int main ()
{
freopen ("cautbin.in","r",stdin);
freopen ("cautbin.out","w",stdout);
read ();
return 0;
}