Pagini recente » Cod sursa (job #778702) | Cod sursa (job #1071521) | Cod sursa (job #2447886) | Cod sursa (job #1456350) | Cod sursa (job #929785)
Cod sursa(job #929785)
#include<stdio.h>
int n,a[100007],x,m,poz;
int cb(int val)
{
int st,dr,med,last=-1;
st=1;
dr=n;
while (st <= dr)
{
med=(st + dr) >> 1;
if (val >= a[med])
{
last=med;
st=med + 1;
}
else
dr=med - 1;
}
return last;
}
int cb2(int val)
{
int st,dr,med,last=-1;
st=1;
dr=n;
while (st <= dr)
{
med=(st + dr)/2;
if (val <= a[med])
{
last=med;
dr=med - 1;
}
else
st=med + 1;
}
return last;
}
int main()
{
int tip;
freopen("cautbin.in" , "r" , stdin);
freopen("cautbin.out" , "w" , stdout);
scanf("%d" , &n);
for (int i=1 ; i<=n ; ++i)
scanf("%d" , &a[i]);
scanf("%d" , &m);
for (int i=1 ; i<=m ; ++i)
{
scanf("%d %d" , &tip , &x);
poz=cb(x);
if (tip == 0)
if(a[poz] == x)
printf("%d\n" , poz);
else
printf("-1\n");
if (tip == 1)
printf("%d\n" , poz);
if (tip == 2)
printf("%d\n" , cb2(x));
}
}