Pagini recente » Cod sursa (job #2681829) | Cod sursa (job #215027) | Cod sursa (job #1714769) | Cod sursa (job #1435997) | Cod sursa (job #2074005)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int a[100005],n,m;
int caut0 ( int st, int dr, int x )
{
int mid, save = -1;
while(st <= dr)
{
mid = ( st+dr ) /2;
if ( x >= a[mid] ) st = mid +1; else dr = mid -1;
if( a[mid] == x ) save = mid ;
}
return save;
}
int caut1( int st, int dr, int x)
{
int mid, save;
while ( st <= dr )
{
mid =( st+dr )/2;
if( x >= a[mid] ) st = mid +1; else dr = mid-1;
if( x >= a[mid] ) save = mid ;
}
return save;
}
int caut2( int st, int dr, int x)
{
int mid, save ;
while( st<=dr )
{
mid = ( st+dr) /2;
if( x > a[mid] ) st = mid+1; else dr = mid-1;
if( x <= a[mid] ) save =mid;
}
return save;
}
int main()
{
in >> n ;
for(int i=1; i<=n; i++) in >> a[i];
int x,y;
in >>m;
for(int i=1; i<=m; i++)
{
in >> y >> x;
if( !y ) out << caut0( 1,n,x) << '\n';
if( y == 1 ) out << caut1(1,n,x) <<'\n';
if( y == 2 ) out << caut2(1,n,x) << '\n';
}
return 0;
}