Cod sursa(job #1394592)
Utilizator | Data | 20 martie 2015 14:28:53 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.69 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[p2]==valoare)
{
fout<<p2<<"\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<<p2<<"\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<<p1<<"\n";
}
}
fin.close();
fout.close();
return 0;
}