Pagini recente » Cod sursa (job #1976428) | Cod sursa (job #2771453) | Cod sursa (job #3288150) | Cod sursa (job #1439196) | Cod sursa (job #2171118)
#include <fstream>
using namespace std;
ifstream fin( "cautbin.in" );
ofstream fout( "cautbin.out" );
const int L = 16, N = 100001;
int v[ N ], n;
int caut0( int x )
{
int 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;
return r;
}
int caut1( int x )
{
int r = 0, pas = 1 << L;
while( pas != 0 )
{
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 != 0 )
{
if( r + pas <= n && !(v[ r + pas ] >= x ) )
r += pas;
pas /= 2;
}
++r;
return r;
}
int main()
{
int m = 0, t = 0, x = 0;
fin >> n;
for( int i = 1; i <= n; ++i )
{
fin >> v[ i ];
}
fin >> m;
for( int i = 0; i < m; ++i )
{
fin >> t >> x;
if( t == 0 )
{
fout << caut0( x ) << "\n";
}
if( t == 1 )
{
fout << caut1( x ) << "\n";
}
if( t == 2 )
{
fout << caut2( x ) << "\n";
}
}
return 0;
}