Pagini recente » Cod sursa (job #2460793) | Cod sursa (job #1989213) | Cod sursa (job #281865) | Cod sursa (job #1370304) | Cod sursa (job #2209179)
#include <fstream>
#define N 100000
#define L 16
using namespace std;
ifstream fin( "cautbin.in" );
ofstream fout( "cautbin.out" );
int v[N + 1], n;
int caut0( int x ) {
int r = 0, pas = 1 << L;
while ( pas ) {
if ( r + pas <= n && v[r + pas] <= x )
r += pas;
pas /= 2;
}
if ( r == 0 || v[r] < x )
r = -1;
return r;
}
int caut1( int x ) {
int r = 0, pas = 1 << L;
while ( pas ) {
if ( r + pas <= n && v[r + pas] <= x )
r += pas;
pas /= 2;
}
return r;
}
int caut2( int x ) {
int r = 0, pas = 1 << L;
while ( pas ) {
if ( r + pas <= n && v[r + pas] < x )
r += pas;
pas /= 2;
}
r ++;
return r;
}
int main() {
fin >> n;
for ( int i = 1; i <= n; i ++ )
fin >> v[i];
int m, rez, t, x;
fin >> m;
for ( int i = 1; i <= m; i ++ ) {
fin >> t >> x;
switch ( t ) {
case 0:
rez = caut0( x );
break;
case 1:
rez = caut1( x );
break;
case 2:
rez = caut2( x );
break;
}
fout << rez << "\n";
}
return 0;
}