Pagini recente » Cod sursa (job #1159372) | Cod sursa (job #1194295) | Cod sursa (job #1173350) | Cod sursa (job #1948083) | Cod sursa (job #886446)
Cod sursa(job #886446)
#include<fstream>
#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( int left, int right )
{
while(left <= right)
{
mid=(left+right)/2;
if( v[mid] <= x)
left=mid+1;
else
right=mid-1;
}
if(v[mid] > x )
--mid;
if(v[mid] == x )
return mid;
return 0;
}
int search1(int left,int right)
{
while(left <= right )
{
mid=(left+right)/2;
if( v[ mid ] >= x )
left=mid+1;
else
right=mid;
}
if(v[mid] > x)
--mid;
if( v[ mid] <= x)
return mid;
return 0;
}
int search2( int left,int right)
{
while(left <= right )
{
mid=(left+right)/2;
if(v[mid] >= x)
left=mid+1;
else
right=mid;
}
if( v[mid] > x)
return mid;
return 0;
}
int main()
{
f>>n;
for(int i=1; i <= n ; i++)
{
f>>v[i];
}
sort(v,v+n);
f>>m;
int tip;
while(m--)
{
f>>tip>>x;
int t;
if( tip == 0 )
t=search( 1, n );
else
if( tip == 1)
t=search1(1, n);
else
t=search2(1,n);
g<<t<<"\n";
}
}