Pagini recente » Cod sursa (job #2594367) | Cod sursa (job #3171673) | Cod sursa (job #3194233) | Cod sursa (job #265206) | Cod sursa (job #2205391)
#include <fstream>
#define MAXE 100001
using namespace std;
int v[MAXE];
int i,j,N,M,T;
char op;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int CautareElement(int x)
{
int s,d,m,p;
s=1;
d=N;
p=-1;
while(s<=d)
{
m=s+(d-s)/2;
if(x==v[m])
{
p=m;
s=m+1;
}
else
{
if(x<v[m])
d=m-1;
else
s=m+1;
}
}
return p;
}
int CautareStanga(int x)
{
int s,d,m,p;
s=1;
d=N;
p=-1;
while(s<=d)
{
m=s+(d-s)/2;
if(x<=v[m]) //inseamna ca se afla in stanga
{
p=m;
d=m-1;
}
else
s=m+1;
}
return p;
}
int CautareDreapta(int x)
{
int s,d,m,p;
s=1;
d=N;
p=-1;
while(s<=d)
{
m=s+(d-s)/2;
if(v[m]<=x)
{
p=m;
s=m+1;
}
else
d=m-1;
}
return p;
}
int main()
{
in>>N;
for(i=1; i<=N; i++)
in>>v[i];
in>>M;
for(i=1; i<=M; i++)
{
in>>op;
if(op=='0')
{
in>>T;
out<<CautareElement(T)<<'\n';
}
else
{
if(op=='1')
{
in>>T;
out<<CautareDreapta(T)<<'\n';
}
else
{
in>>T;
out<<CautareStanga(T)<<'\n';
}
}
}
return 0;
}