Pagini recente » Cod sursa (job #182496) | Cod sursa (job #1239448) | Cod sursa (job #190919) | Cod sursa (job #1930974) | Cod sursa (job #1971164)
#include <stdio.h>
#include <stdlib.h>
#define put 131072
int n, v[100001];
int x0 ( int x ) {
int r, pas;
r = 1;
pas = put;
while( pas > 0 ) {
if( r + pas <= n && v[r + pas] <= x ) {
r += pas;
}
pas /= 2;
}
if( v[r] != x ) {
r = -1;
}
return r;
};
int x1 ( int x ) {
int r, pas;
r = 1;
pas = put;
while( pas > 0 ) {
if( r + pas <= n && v[r + pas] <= x ) {
r += pas;
}
pas /= 2;
}
return r;
};
int x2 ( int x ) {
int r, pas;
r = 1;
pas = put;
while( pas > 0 ) {
if( r + pas <= n && v[r + pas] < x ) {
r += pas;
}
pas /= 2;
}
return r + 1;
};
int cr ( int c, int x ) {
switch( c ) {
case 0 :
return x0( x );
break;
case 1 :
return x1( x );
break;
case 2 :
return x2( x );
}
return 0;
}
int main() {
FILE *fin, *fout;
int i, m, x, c;
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", &c, &x );
fprintf( fout, "%d\n", cr( c, x ) );
}
fclose( fin );
fclose( fout );
return 0;
}