Pagini recente » Cod sursa (job #3199136) | Cod sursa (job #2749894) | Cod sursa (job #2356463) | Cod sursa (job #699091) | Cod sursa (job #1857663)
#include <fstream>
using namespace std ;
ifstream cin ("cautbin.in") ;
ofstream cout ("cautbin.out") ;
const int MAX = 1e5 + 14 ;
int v [MAX] ;
int TypeOne ( int n , int x ){
int st = 1 ;
int dr = n ;
int sol = -1 ;
while ( st <= dr ) {
int mij = ( st + dr ) / 2 ;
if ( v [mij] < x ) {
st = mij + 1 ;
}
else if ( v [mij] > x ) {
dr = mij - 1 ;
}
else {
sol = mij ;
st = mij + 1 ;
}
}
return sol ;
}
int TypeTwo ( int n , int x )
{
int st = 1 ;
int dr = n ;
int sol ;
while ( st <= dr ) {
int mij = ( st + dr ) / 2 ;
if ( v [mij] <= x ) {
st = mij + 1 ;
sol = mij ;
}
else {
dr = mij - 1 ;
}
}
return sol ;
}
int TypeThree ( int n , int x )
{
int st = 1 ;
int dr = n ;
int sol = 1 ;
while ( st <= dr ) {
int mij = ( st + dr ) / 2 ;
if ( v [mij] < x ) {
st = mij + 1 ;
sol = mij ;
}
else {
dr = mij - 1 ;
}
}
if ( v [sol] < x ) {
++ sol ;
}
return sol ;
}
int main ()
{
int n ;
cin >> n ;
for ( int i = 1 ; i <= n ; ++ i ) {
cin >> v [i] ;
}
int m ;
cin >> m ;
while ( m -- ) {
int tip ;
cin >> tip ;
if ( tip == 0 ) {
int x ;
cin >> x ;
cout << TypeOne ( n , x ) << '\n' ;
}
else if ( tip == 1 ) {
int x ;
cin >> x ;
cout << TypeTwo ( n , x ) << '\n' ;
}
else {
int x ;
cin >> x ;
cout << TypeThree ( n , x ) << '\n' ;
}
}
return 0 ;
}