Pagini recente » Cod sursa (job #199463) | Cod sursa (job #1647504) | Cod sursa (job #254376) | Cod sursa (job #2229513) | Cod sursa (job #1457195)
#include<fstream>
using namespace std;
#define MAX 100010
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[MAX];
int N,M,op,el;
void cautbin_1(int x)
{
int l=1,r=N,mid;
int max=-1;
while(l<=r)
{
mid=(l+r)/2;
if(v[mid]==x)
{
max=mid;
l=mid+1;
}
else if(v[mid] > x)
r=mid-1;
else
l=mid+1;
}
out<<max<<'\n';
}
void cautbin_2(int x)
{
int l=1,r=N,mid;
int max=0;
while(l<=r)
{
mid=(l+r)/2;
if(v[mid]<=x)
{
max=mid;
l=mid+1;
}
else if(v[mid] > x)
r=mid-1;
}
out<<max<<'\n';
}
void cautbin_3(int x)
{
int l=1,r=N,mid;
int min=0XFFFFFFFF;
while(l<=r)
{
mid=(l+r)/2;
if(v[mid]>=x)
{
min=mid;
r=mid-1;
}
else
l=mid+1;
}
out<<min<<'\n';
}
int main()
{
in>>N;
for(int i=1;i<=N;i++)
in>>v[i];
in>>M;
for(int i=1;i<=M;i++)
{
in>>op;
in>>el;
if(op==0)
{
cautbin_1(el);
}
else if(op==1)
{
cautbin_2(el);
}
else if(op==2)
{
cautbin_3(el);
}
}
in.close();
out.close();
return 0;
}