Pagini recente » Cod sursa (job #2615267) | Autentificare | Cod sursa (job #3215661) | Cod sursa (job #3228187) | Cod sursa (job #2509127)
#include <stdio.h>
int v[100000];
int main() {
FILE *fin = fopen( "cautbin.in", "r" );
FILE *fout = fopen( "cautbin.out", "w" );
int n, m, q, e, i, dr, st, mij;
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", &q, &e );
if ( q == 0 ) {
st = 0;
dr = n;
while ( dr - st > 1 ) {
mij = (st + dr) / 2;
if ( v[mij] > e ) {
dr = mij;
} else {
st = mij;
}
}
if ( e == v[st] ) {
fprintf( fout, "%d\n", st + 1 );
} else {
fprintf( fout, "-1\n" );
}
} else if ( q == 1 ) {
st = 0;
dr = n;
while ( dr - st > 1 ) {
mij = (st + dr) / 2;
if ( v[mij] > e ) {
dr = mij;
} else {
st = mij;
}
}
fprintf( fout, "%d\n", st + 1 );
} else if ( q == 2 ) {
st = -1;
dr = n - 1;
while ( dr - st > 1 ) {
mij = (st + dr) / 2;
if ( v[mij] >= e ) {
dr = mij;
} else {
st = mij;
}
}
if ( v[0] == e ) {
fprintf( fout, "1" );
} else {
fprintf( fout, "%d\n", dr + 1 );
}
}
}
fclose( fin );
fclose( fout );
return 0;
}