Cod sursa(job #2989081)
Utilizator | Data | 5 martie 2023 19:43:31 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.4 kb |
#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;
}