Pagini recente » Cod sursa (job #1417305) | Cod sursa (job #3289577) | Cod sursa (job #1548770) | Cod sursa (job #3210236) | Cod sursa (job #269373)
Cod sursa(job #269373)
#include <stdio.h>
#define dim 100001
long v[dim], n, q, i, type, x, m;
void cb1(long), cb2(long), cb3(long);
void read(void)
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%ld", &n);
for( register int i = 1; i <= n; i++)
scanf("%ld",&v[i]);
scanf("%ld",&q);
}
int main(void)
{
read();
for( i = 1; i <= q; i++)
{
scanf("%ld%ld",&type, &x);
switch(type)
{
case 0 : cb1(x); break;
case 1 : cb2(x); break;
case 2 : cb3(x); break;
}
}
fcloseall();
return 0;
}
void cb1(long x)
{
long poz = -1, l = 1 , r = n;
while(l <= r)
{
m = (l+r)/2;
if(v[m] == x)
{
poz = m;
l = m+1;
}
else
if(v[m] < x)
l = m+1;
else
r = m-1;
}
printf("%ld\n",poz);
}
void cb2(long x)
{
long poz = -1, l = 1 , r = n;
while(l <= r)
{
m = (l+r)/2;
if(v[m] <= x)
{
poz = m;
l = m+1;
}
else
r = m-1;
}
printf("%ld\n",poz);
}
void cb3(long x)
{
long poz = -1, l = 1 , r = n;
while(l <= r)
{
m = (l+r)/2;
if(v[m] >= x)
{
poz = m;
r = m-1;
}
else
l = m+1;
}
printf("%ld\n",poz);
}