Pagini recente » Cod sursa (job #1659256) | Cod sursa (job #1150320) | Cod sursa (job #1022373) | Cod sursa (job #3230272) | Cod sursa (job #886458)
Cod sursa(job #886458)
#include<fstream>
#include<algorithm>
#include<vector>
#define NMAX 100005
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[NMAX],m;
int mid;
int x;
int search( void )
{
int lo=1;
int hi=n;
while(lo <= hi)
{
mid=lo+(hi-lo)/2;
if( v[mid] <= x)
lo=mid+1;
else
hi=mid-1;
}
if(v[mid] > x )
--mid;
if(v[mid] == x )
return mid;
return 0;
}
int search1(void)
{
int lo=1;
int hi=n;
while(lo <= hi )
{
mid=lo+(hi-lo)/2;
if( v[ mid ] >= x )
lo=mid+1;
else
hi=mid-1;
}
if(v[mid] > x)
--mid;
if( v[ mid] <= x)
return mid;
return 0;
}
int search2( void )
{
int lo=1;
int hi=n;
while(lo <= hi )
{
mid=lo +(hi-lo)/2;
if(v[mid] >= x)
lo=mid+1;
else
hi=mid-1;
}
if( v[mid] > x)
return mid;
return 0;
}
int main()
{
f>>n;
for(int i=1; i <= n ; i++)
{
f>>v[i];
}
sort(v+1,v+n+1);
f>>m;
int tip;
while(m--)
{
f>>tip>>x;
int t;
if( tip == 0 )
t=search( );
else
if( tip == 1)
t=search1();
else
t=search2();
g<<t<<"\n";
}
}