Pagini recente » Cod sursa (job #2144486) | Cod sursa (job #2464609) | Cod sursa (job #1339855) | Istoria paginii utilizator/ioanaliviapopescu15 | Cod sursa (job #465219)
Cod sursa(job #465219)
#include <stdio.h>
const char FIN[] = "cautbin.in", FOU[] = "cautbin.out";
int V[100005] ;
int N, T ;
int main(void)
{
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
scanf("%d", &N);
for (int i = 1; i <= N; ++i)
scanf ( "%d", &V[i] ) ;
int aux, cnt, i ;
for ( aux = 1; aux <= N; aux <<= 1 ) ;
for ( scanf ( "%d", &T ) ; T ; --T)
{
int a, val ;
scanf ( "%d %d", &a, &val ) ;
if ( a != 2 ) // 0 x sau 1 x
{
for (cnt = aux, i = 0; cnt; cnt >>= 1)
if (i + cnt <= N && V[i + cnt] <= val)
i += cnt;
if ( a == 0 && V[i] == val || a == 1 ) // verificam daca se gaseste valoarea in sir pentru cazul 0 x
printf ( "%d\n", i ) ;
else
printf ( "-1\n" ) ;
}
else // 2 x
{
for (cnt = aux, i = 0; cnt; cnt >>= 1)
if (i + cnt <= N && V[i + cnt] < val)
i += cnt;
printf("%d\n", ++i);
}
}
return 0;
}