Pagini recente » Cod sursa (job #1758363) | Cod sursa (job #2086035) | Cod sursa (job #18185) | Cod sursa (job #2817037) | Cod sursa (job #2602525)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N,M;
int A[100005];
int cautare_binara_0_1 (int elem)
{
int st=1,dr=N;
while (st<=dr)
{
int mij=st+(dr-st)/2;
if (A[mij]<=elem)
{
st=mij+1;
}
else
{
dr=mij-1;
}
}
return dr;
}
int cautare_binara2 (int elem)
{
int st=1,dr=N;
while (st<=dr)
{
int mij=st+(dr-st)/2;
if (A[mij]<elem)
{
st=mij+1;
}
else
{
dr=mij-1;
}
}
return st;
}
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)
{
int poz=cautare_binara_0_1(x);
if (A[poz]==x)
{
fout << poz;
}
else
{
fout << -1;
}
}
else if (tip==1)
{
fout << cautare_binara_0_1(x);
}
else
{
fout << cautare_binara2(x);
}
fout << '\n';
}
fin.close();
fout.close();
return 0;
}