Pagini recente » Borderou de evaluare (job #1708077) | Borderou de evaluare (job #2052020) | Borderou de evaluare (job #1560612) | Borderou de evaluare (job #951614) | Cod sursa (job #2412196)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
#define NMAX 100005
int N,X,M,Q,POZ;
int V[NMAX];
int Cautare_Binara_0(int st, int dr)
{
while(st<=dr)
{
int mij=(st+dr)/2;
if (V[mij]>X)
dr=mij-1;
else if (V[mij]<X)
st=mij+1;
else
{
POZ=mij;
st=mij+1;
}
}
return POZ;
}
int Cautare_Binara_1(int st, int dr)
{
while (st<=dr)
{
int mij=(st+dr)/2;
if (V[mij]<=X)
st=mij+1;
else dr=mij-1;
}
return dr;
}
int Cautare_Binara_2(int st, int dr)
{
while (st<=dr)
{
int mij=(st+dr)/2;
if (V[mij]>=X)
dr=mij-1;
else st=mij+1;
}
return dr;
}
int main()
{
fin>>N;
for (int i=1; i<=N; i++)
fin>>V[i];
fin>>M;
for (int i=1; i<=M; i++)
{
fin>>Q>>X;
if (!Q)
fout<<Cautare_Binara_0(1,N)<<"\n";
if (Q==1)
fout<<Cautare_Binara_1(1,N)<<"\n";
if (Q==2)
fout<<Cautare_Binara_2(1,N)<<"\n";
}
return 0;
}