Pagini recente » Cod sursa (job #1370004) | Cod sursa (job #353130) | Borderou de evaluare (job #2039285) | Borderou de evaluare (job #1952078) | Cod sursa (job #2989081)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int i,a,b,gasit,pi,pf,k,N,M,v[10000];
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>N;
for(i=0;i<N;i++)
f>>v[i];
f>>M;
for(i=0;i<M;i++)
{
f>>a>>b;
if(a==0)
{
pi=0;
pf=N-1;
gasit=-2;
while(pi<=pf)
{
k=(pi+pf)/2;
while(v[k]==b)
{
pi=k+1;
gasit=k;
k=(pi+pf)/2;
}
if(v[k]>b)
pf=k-1;
else
pi=k+1;
}
cout<<gasit+1<<endl;
}
else if(a==1)
{
pi=0;
pf=N-1;
while(pi<pf)
{
k=(pi+pf)/2;
if(v[k]<=b)
pi=k+1;
else
pf=k-1;
}
cout<<k<<endl;
}
else if(a==2)
{
pi=0;
pf=N-1;
while(pi<=pf)
{
k=(pi+pf)/2;
if(v[k]>=b)
pf=k-1;
else
pi=k+1;
}
cout<<k+1<<endl;
}
}
return 0;
}