Pagini recente » Cod sursa (job #1583873) | Cod sursa (job #499415) | Cod sursa (job #1118131) | Cod sursa (job #1443009) | Cod sursa (job #499944)
Cod sursa(job #499944)
#include<stdio.h>
long x[101],N;
long bsd (long val)
{
long st,dr,med,last=-1;
st=1; dr=N;
while (st<=dr)
{
med=st+(dr-st)/2;
if (x[med]<=val)
{
last=med;
st=med+1;
}
else dr=med-1;
}
return last;
}
long bs3 (long val)
{
long st,dr,med,first=-1;
st=1; dr=N;
while (st<=dr)
{
med=st+(dr-st)/2;
if (val<=x[med])
{
dr=med-1;
first=med;
}
else st=med+1;
}
return first;
}
int main()
{
freopen("cautbin.txt","r",stdin);
freopen("cautbin.out","w",stdout);
long M,i,a,n,rez;
scanf ("%d",&N);
for (i=1;i<=N;i++)
scanf("%d",&x[i]);
scanf ("%d",&M);
for (i=1;i<=M;i++)
{
scanf("%d%d",&a,&n);
rez=bsd(n);
switch (a)
{
case 0:
if (x[rez]!=n) printf("-1\n");
else printf("%d\n",rez);
break;
case 1:
printf ("%d\n",rez);
break;
default:
printf("%d\n",bs3(n));
break;
}
}
return 0;
}