Pagini recente » Cod sursa (job #822342) | Cod sursa (job #1659669) | Cod sursa (job #1516245) | Cod sursa (job #2594376) | Cod sursa (job #1451795)
#include<fstream>
#define NMax 100005
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N,M,Value;
int V[NMax];
int BS0()
{
int Sol = -1, L = 1, R = N;
while(L<=R)
{
int Mid=(L+R)/2;
if(V[Mid]==Value)
{
Sol=Mid;
L=Mid+1;
}
else
if(V[Mid]<Value)
L=Mid+1;
else
R=Mid-1;
}
return Sol;
}
int BS1()
{
int Sol = -1, L = 1, R = N;
while(L<=R)
{
int Mid = (L + R) / 2;
if(V[Mid]<=Value)
{
Sol = Mid;
L = Mid + 1;
}
else
R = Mid - 1;
}
return Sol;
}
int BS2()
{
int Sol = -1, L = 1, R = N;
while(L<=R)
{
int Mid = (L + R) / 2;
if(V[Mid]>=Value)
{
Sol = Mid;
R = Mid - 1;
}
else
L = Mid + 1;
}
return Sol;
}
int main()
{
int i;
fin>>N;
for(i = 1; i<=N; ++i)
fin>>V[i];
fin>>M;
while(M--)
{
int op,v;
fin>>op>>Value;
if(op == 0)
fout<<BS0()<<"\n";
if(op == 1)
fout<<BS1()<<"\n";
if(op == 2)
fout<<BS2()<<"\n";
}
return 0;
}