Pagini recente » Cod sursa (job #1451390) | Cod sursa (job #491375) | Cod sursa (job #589619) | Cod sursa (job #1452275) | Cod sursa (job #3308464)
#include <stdio.h>
#define MAXN 100000
int v[MAXN];
int main () {
FILE *fin , *fout;
int n , i , m , tip , x , st , dr , mij;
fin = fopen ( "cautbin.in" , "r" );
fscanf ( fin , "%d" , &n );
for ( i = 0 ; i < n ; i++ )
fscanf ( fin , "%d" , &v[i] );
fscanf ( fin , "%d" , &m );
fout = fopen ( "cautbin.out" , "w" );
for ( i = 0 ; i < m ; i++ ) {
fscanf ( fin , "%d%d" , &tip , &x );
switch ( tip ) {
case 0:
st = 0;
dr = n;
while ( st < dr ) {
mij = ( st + dr ) / 2;
if ( x + 1 > v[mij] )
st = mij + 1;
else
dr = mij;
}
if ( st > 0 && v[st - 1] == x )
fprintf ( fout , "%d\n" , st );
else
fprintf ( fout , "-1\n" );
break;
case 1:
st = 0;
dr = n;
while ( st < dr ) {
mij = ( st + dr ) / 2;
if ( x + 1 > v[mij] )
st = mij + 1;
else
dr = mij;
}
fprintf ( fout , "%d\n" , st );
break;
default:
st = 0;
dr = n - 1;
while ( st < dr ) {
mij = ( st + dr ) / 2;
if ( x > v[mij] )
st = mij + 1;
else
dr = mij;
}
fprintf ( fout , "%d\n" , st + 1 );
}
}
fclose ( fin );
fclose ( fout );
return 0;
}