Pagini recente » Cod sursa (job #2691151) | Cod sursa (job #1907886) | Cod sursa (job #1778245) | Cod sursa (job #1822381) | Cod sursa (job #2062248)
#include <cstdio>
#define MAXN 100000
#define L 16
using namespace std;
int v[MAXN + 5];
int main( ) {
int n, m, i, r, pas, tip, x;
freopen( "cautbin.in", "r", stdin );
freopen( "cautbin.out", "w", stdout );
scanf( "%d", &n );
for( i = 1; i <= n; i++ )
scanf( "%d", &v[i] );
scanf( "%d", &m );
for( i = 1; i <= m; i++ ) {
scanf( "%d%d", &tip, &x );
r = 0;
pas = 1 << L;
if( tip == 0 || tip == 1 ) {
while( pas != 0 ) {
if( r + pas <= n && v[r + pas] <= x )
r += pas;
pas /= 2;
}
if( tip == 0 ) {
if( v[r] == x )
printf( "%d\n", r );
else
printf( "-1\n" );
}
else
printf( "%d\n", r );
}
else {
while( pas != 0 ) {
if( r + pas <= n && v[r + pas] < x )
r += pas;
pas /= 2;
}
printf( "%d\n", 1 + r );
}
}
return 0;
}