Pagini recente » Cod sursa (job #337816) | Cod sursa (job #1787898) | Cod sursa (job #1808015) | Cod sursa (job #299742) | Cod sursa (job #255898)
Cod sursa(job #255898)
#include<stdio.h>
#define DIM 100001
int n,a[DIM];
int q0 (int x)
{
int st=1,dr=n,mi;
while(st<=dr)
{
mi=(st+dr)/2;
if(a[mi]==x)
{
while(a[mi]==x)
++mi;
return --mi;
}
if(a[mi]<x)
dr=--mi;
if(a[mi]>x)
st=++mi;
}
return -1;
}
int q1 (int x)
{
int st=1,dr=n,mi;
while(st<=dr)
{
mi=(st+dr)/2;
if(a[mi]==x)
return mi;
if(a[mi]<x)
dr=--mi;
if(a[mi]>x)
st=++mi;
}
q1(--x);
return mi;
}
int q2 (int x)
{
int st=1,dr=n,mi;
while(st<=dr)
{
mi=(st+dr)/2;
if(a[mi]==x)
return mi;
if(a[mi]<x)
dr=--mi;
if(a[mi]>x)
st=++mi;
}
q2(++x);
return mi;
}
int main ()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int i,m,x,q;
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",&q,&x);
if(q==0)
printf("%d\n",q0(x));
if(q==1)
printf("%d\n",q1(x));
if(q==2)
printf("%d\n",q2(x));
}
return 0;
}