Cod sursa(job #1121916)
Utilizator | Data | 25 februarie 2014 14:47:00 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.94 kb |
#include<fstream>
using namespace std;
int n,i,x,p1,p2,m,a[100002],r,y,v;
fstream fin,fout;
int main()
{
fin.open("cautbin.in",ios::in);
fout.open("cautbin.out",ios::out);
fin>>n;
for(i=1;i<=n;i++)
{
fin>>a[i];
}
fin>>m;
x=1;
while(x<=m)
{
fin>>y>>v;
if(y==0)
{
p1=1;
p2=n;
while(p1<=p2)
{
m=p1+(p2-p1)/2;
if(v>=a[m])
{
p1=m+1;
}
else
{
p2=m-1;
}
}
if(a[p2]==v)
{
fout<<p2;
}
else
{
fout<<"-1";
}
fout<<"\n";
}
if(y==1)
{
p1=1;
p2=n;
r=0;
while(p1<=p2)
{
m=p1+(p2-p1)/2;
if(v<a[m] && v>=a[m-1])
{
fout<<m-1<<"\n";
break;
}
if(v>=a[m])
{
p1=m+1;
}
else
{
p2=m-1;
}
}
}
if(y==2)
{
p1=1;
p2=n;
while(p1<=p2)
{
m=p1+(p2-p1)/2;
if(v<=a[m] && v>a[m-1])
{
fout<<m<<"\n";
break;
}
else
if(v>a[m])
{
p1=m+1;
}
else
{
p2=m-1;
}
}
}
x=x+1;
}
fout.close();
fin.close();
return 0;
}