Pagini recente » Borderou de evaluare (job #2134787) | Cod sursa (job #1261588) | Cod sursa (job #3222903) | Cod sursa (job #3222193) | Cod sursa (job #1965318)
#include <fstream>
using namespace std;
ofstream fout ("cautbin.out");
ifstream fin ("cautbin.in");
int cautbin1( int x );
int cautbin2( int x );
int cautbin3( int x );
int n,a,b,t,i;
int v[100005];
int main()
{
fin>>n;
for( i = 1 ; i <= n ; i++ )
fin>>v[ i ];
fin>>t;
while( t-- )
{
fin>>a>>b;
switch( a )
{
case 0 : fout<<cautbin1( b ) ; break ;
case 1 : fout<<cautbin2( b ) ; break ;
case 2 : fout<<cautbin3( b ) ; break ;
}
fout<<'\n';
}
}
int cautbin1( int x )
{
int cs = 1;
int cd = n;
int rsp = -1;
while( cs <= cd )
{
int mij = ( cs + cd ) >> 1;
if( v[ mij ] == x )
{
rsp = mij;
cs = mij + 1;
}
else
cd = mij - 1;
}
return rsp;
}
int cautbin2( int x )
{
int cs = 1;
int cd = n;
int rsp = -1;
while( cs <= cd )
{
int mij = ( cs + cd ) >> 1;
if( v[ mij ] <= x )
{
rsp = mij;
cs = mij + 1;
}
else
cd = mij - 1;
}
return rsp;
}
int cautbin3( int x )
{
int cs = 1;
int cd = n;
int rsp = -1;
while( cs <= cd )
{
int mij = ( cs + cd ) >> 1;
if( v[ mij ] >= x )
{
rsp = mij;
cd = mij - 1;
}
else
cs = mij + 1;
}
return rsp;
}