Cod sursa(job #1394593)
Utilizator | Data | 20 martie 2015 14:29:56 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.7 kb |
#include<fstream>
using namespace std;
int n,m,a[100009],i,intrebare,valoare,p1,p2,mij;
int main ()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1;i<=n;i++)
{
fin>>a[i];
}
fin>>m;
for(i=1;i<=m;i++)
{
fin>>intrebare>>valoare;
if(intrebare==0)
{
p1=1;
p2=n;
while(p1<=p2)
{
mij=(p1+p2)/2;
if(a[mij]<=valoare)
{
p1=mij+1;
}
else
{
p2=mij-1;
}
}
if(a[mij]==valoare)
{
fout<<mij<<"\n";
}
else
{
fout<<"-1"<<"\n";
}
}
if(intrebare==1)
{
p1=1;
p2=n;
while(p1<=p2)
{
mij=(p1+p2)/2;
if(a[mij]<=valoare)
{
p1=mij+1;
}
else
{
p2=mij-1;
}
}
fout<<mij<<"\n";
}
if(intrebare==2)
{
p1=1;
p2=n;
while(p1<=p2)
{
mij=(p1+p2)/2;
if(a[mij]<valoare)
{
p1=mij+1;
}
else
{
p2=mij-1;
}
}
fout<<mij<<"\n";
}
}
fin.close();
fout.close();
return 0;
}