Pagini recente » Cod sursa (job #1427386) | Cod sursa (job #2883303) | Cod sursa (job #851695) | Cod sursa (job #632607) | Cod sursa (job #2251760)
#include <stdio.h>
#include <stdlib.h>
int v[100001], n;
int cautbin( int x ) {
int r, pas;
r = 0;
pas = 1 << 17;
while( pas != 0 ) {
if( r + pas <= n && v[r + pas] <= x ) {
r += pas;
}
pas /= 2;
}
return r;
}
int cautbinx( int x ) {
int r, pas;
r = 0;
pas = 1 << 17;
while( pas != 0 ) {
if( r + pas <= n && v[r + pas] < x ) {
r += pas;
}
pas /= 2;
}
return r + 1;
}
int main() {
FILE *fin, *fout;
int m, i, q, x, r;
fin = fopen( "cautbin.in", "r" );
fout = fopen( "cautbin.out", "w" );
fscanf( fin, "%d", &n );
for( i = 1; i <= n; i++ ) {
fscanf( fin, "%d", &v[i] );
}
fscanf( fin, "%d", &m );
for( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &q, &x );
if( q == 2 ) {
fprintf( fout, "%d\n", cautbinx( x ) );
}
else if( q == 1 ) {
fprintf( fout, "%d\n", cautbin( x ) );
}
else if( v[cautbin( x )] == x ) {
fprintf( fout, "%d\n", cautbin( x ) );
}
else {
fprintf( fout, "-1\n" );
}
}
fclose( fin );
fclose( fout );
return 0;
}