Pagini recente » Cod sursa (job #628683) | Cod sursa (job #1209014) | Cod sursa (job #2292012) | Cod sursa (job #2191188) | Cod sursa (job #2568207)
#include <bits/stdc++.h>
#define L 17
int v[100000];
int cautareBinara( int nr, int n ) {
int r = 0, pas = 1 << L;
while ( pas != 0 ) {
if ( r + pas < n && v[r + pas] <= nr )
r += pas;
pas /= 2;
}
return r;
}
int main() {
FILE *fin, *fout;
int n, m, i, c, x, a;
fin = fopen( "cautbin.in", "r" );
fout = fopen( "cautbin.out", "w" );
fscanf( fin, "%d", &n );
for ( i = 0; i < n; i++ )
fscanf( fin, "%d", &v[i] );
fscanf( fin, "%d", &m );
for ( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &c, &x );
a = cautareBinara( x, n );
if ( c == 0 ) {
if ( v[a] == x )
fprintf( fout, "%d\n", a + 1 );
else
fprintf( fout, "-1\n" );
} else if ( c == 1 ) {
fprintf( fout, "%d\n", a + 1 );
} else if ( c == 2 ) {
while ( a >= 0 && v[a] >= x )
a--;
a++;
fprintf( fout, "%d\n", a + 1 );
}
}
fclose( fin );
fclose( fout );
return 0;
}