Pagini recente » Cod sursa (job #254685) | Cod sursa (job #1059587) | Cod sursa (job #560888) | Cod sursa (job #2770237) | Cod sursa (job #499959)
Cod sursa(job #499959)
#include<stdio.h>
long N,v[101];
long bsdr (long x)
{
long st=1,dr=N,med,last=1;
while(st<=dr)
{
med=st+(dr-st)/2;
if (v[med]<=x)
{
last=med;
st=med+1;
}
else dr=med-1;
}
return last;
}
long bsst (long x)
{
long st=1,dr=N,med,first=1;
while (st<=dr)
{
med=st+(dr-st)/2;
if (x<=v[med])
{
dr=med-1;
first=med;
}
else st=med+1;
}
return first;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
long M,i,a,n,poz;
scanf("%ld",&N);
for (i=1;i<=N;i++)
scanf("%ld",&v[i]);
scanf("%ld",&M);
for (i=1;i<=M;i++)
{
scanf("%ld%ld",&a,&n);
switch (a)
{
case 0:
{
poz=bsdr(n);
if (v[poz]==n)
printf("%ld\n",poz);
else printf("-1\n");
break;
}
case 1:
printf("%ld\n",poz);
break;
case 2:
printf("%ld\n",bsst(n));
break;
}
}
return 0;
}