Pagini recente » Cod sursa (job #846399) | Cod sursa (job #1929269) | Cod sursa (job #2644496) | Cod sursa (job #1065558) | Cod sursa (job #2602520)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N,M;
int A[100005];
int cautare_binara0 (int elem)
{
int st=1,dr=N,sol=-1;
while (st<=dr)
{
int mij=st+(dr-st)/2;
if (A[mij]==elem)
{
sol=mij;
st=mij+1;
}
else
{
dr=mij-1;
}
}
return sol;
}
int cautare_binara1 (int elem)
{
int st=1,dr=N,sol=-1;
while (st<=dr)
{
int mij=st+(dr-st)/2;
if (A[mij]<=elem)
{
sol=mij;
st=mij+1;
}
else
{
dr=mij-1;
}
}
return sol;
}
int cautare_binara2 (int elem)
{
int st=1,dr=N,sol=-1;
while (st<=dr)
{
int mij=st+(dr-st)/2;
if (A[mij]>=elem)
{
sol=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
return sol;
}
int main()
{
fin >> N;
int i;
for (i=1;i<=N;++i)
{
fin >> A[i];
}
fin >> M;
for (i=1;i<=M;++i)
{
int tip,x;
fin >> tip >> x;
if (tip==0)
{
fout << cautare_binara0(x);
}
else if (tip==1)
{
fout << cautare_binara1(x);
}
else
{
fout << cautare_binara2(x);
}
fout << '\n';
}
fin.close();
fout.close();
return 0;
}