Pagini recente » Cod sursa (job #1762026) | Cod sursa (job #2249218) | Cod sursa (job #1826964) | Cod sursa (job #1323629) | Cod sursa (job #782952)
Cod sursa(job #782952)
#include<stdio.h>
long n,x[100002],y,m,poz;
int cb(long val)
{
int st,dr,med,last=-1;
st=1;
dr=n;
while (st<=dr)
{
med=(st+dr)/2;
if (val>=x[med])
{
last=med;
st=med+1;
}
else
dr=med-1;
}
return last;
}
int cb2(long val)
{
int st,dr,med,last=-1;
st=1;
dr=n;
while (st<=dr)
{
med=(st+dr)/2;
if (val<=x[med])
{
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
int main()
{
long tip,i;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%ld",&n);
for (i=1;i<=n;i++)
scanf("%ld",&x[i]);
scanf("%ld",&m);
for (i=1;i<=m;i++)
{
scanf("%ld%ld",&tip,&y);
poz=cb(y);
if (tip==0)
if(x[poz]==y)
printf("%ld\n",poz);
else
printf("-1\n");
if (tip==1)
printf("%ld\n",poz);
if (tip==2)
printf("%ld\n",cb2(y));
}
}