Pagini recente » Cod sursa (job #2156114) | Cod sursa (job #2053096) | Cod sursa (job #624248) | Cod sursa (job #3032845) | Cod sursa (job #1447525)
#include <iostream>
#include<fstream>
using namespace std;
int v[100005],n;
int cautarebinara0(int x)
{
int mij,st,dr,aux,OK=0;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(x<v[mij])
dr=mij-1;
else if(x>v[mij])
st=mij+1;
if(x==v[mij])
{
aux=mij;
st=mij+1;
OK=1;
}
}
if(OK==0)
return -1;
return aux;
}
int cautarebinara1(int x)
{
int mij,st,dr,aux;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(x<v[mij])
dr=mij-1;
else
{
aux=mij;
st=mij+1;
}
}
return aux;
}
int cautarebinara2(int x)
{
int mij,st=1,dr=n,aux;
while(st<=dr)
{
mij=(st+dr)/2;
if (x>v[mij])
st=mij+1;
else
{
aux=mij;
dr=mij-1;
}
}
return aux;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int M,i,operatie,x;
f>>n;
for (int i=1; i<=n; i++)
f>>v[i];
f>>M;
for(i=1; i<=M; i++)
{
f>>operatie;
f>>x;
if(operatie==0)
g<<cautarebinara0(x)<<"\n";
else if(operatie==1)
g<<cautarebinara1(x)<<"\n";
else g<<cautarebinara2(x)<<"\n";
}
return 0;
}