Pagini recente » Cod sursa (job #1866983) | Cod sursa (job #434470) | Cod sursa (job #772252) | Cod sursa (job #737155) | Cod sursa (job #2346914)
#include <stdio.h>
#include <stdlib.h>
#define L 16
#define N 100001
int v[N], n, m;
int main() {
int r, pas, i, a, x;
FILE *fin, *fout;
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", &a, &x );
if ( a == 0 ) {
r = 0;
pas = 1 << L;
while ( pas != 0 ) {
if ( r + pas <= n && v[r + pas] <= x ) {
r += pas;
}
pas /= 2;
}
if ( r == 0 || v[r] < x ) {
r = -1;
}
}
if ( a == 1 ) {
r = 0;
pas = 1 << L;
while ( pas != 0 ) {
if ( r + pas <= n && v[r + pas] <= x ) {
r += pas;
}
pas /= 2;
}
}
if ( a == 2 ) {
r = 0;
pas = 1 << L;
while ( pas != 0 ) {
if ( r + pas <= n && v[r + pas] < x ) {
r += pas;
}
pas /= 2;
}
r ++;
}
fprintf( fout, "%d\n", r );
}
fclose( fin );
fclose( fout );
return 0;
}