Pagini recente » Cod sursa (job #3360768) | Cod sursa (job #3360508) | Autentificare | Cod sursa (job #3360600) | Cod sursa (job #3360489)
#include <stdio.h>
#define MAXN 100000
int sir[MAXN];
int main () {
FILE *fin , *fout;
int n , m , i , tip , x , sts , drs , mijs;
fin = fopen ( "cautbin.in" , "r" );
fscanf ( fin , "%d" , &n );
for ( i = 0 ; i < n ; i++ )
fscanf ( fin , "%d" , &sir[i] );
fscanf ( fin , "%d" , &m );
fout = fopen ( "cautbin.out" , "w" );
for ( i = 0 ; i < m ; i++ ) {
fscanf ( fin , "%d%d" , &tip , &x );
if ( tip == 0 ) {
sts = 0;
drs = n;
while ( drs - sts > 1 ) {
mijs = sts + ( drs - sts ) / 2;
if ( sir[mijs] > x )
drs = mijs;
else
sts = mijs;
}
if ( sir[sts] == x )
fprintf ( fout , "%d" , sts + 1 );
else
fprintf ( fout , "-1" );
} else if ( tip == 1 ) {
sts = 0;
drs = n;
while ( drs - sts > 1 ) {
mijs = sts + ( drs - sts ) / 2;
if ( sir[mijs] > x )
drs = mijs;
else
sts = mijs;
}
fprintf ( fout , "%d" , sts + 1 );
} else {
sts = -1;
drs = n - 1;
while ( drs - sts > 1 ) {
mijs = sts + ( drs - sts ) / 2;
if ( sir[mijs] < x )
sts = mijs;
else
drs = mijs;
}
fprintf ( fout , "%d" , drs + 1 );
}
fputc ( '\n' , fout );
}
fclose ( fin );
fclose ( fout );
return 0;
}