Cod sursa(job #1892927)
Utilizator | Data | 25 februarie 2017 13:20:02 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.66 kb |
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,i,m,v[100002],x,w[100002],p1,p2,k,q;
int main()
{
for(i=1;i<=n;i++)
{
fin>>v[i];
}
fin>>m;
for(i=1;i<=m;i++)
{
fin>>w[i]>>x;
if(w[i]==1)
{
p1=1;
p2=n;
k=-1;
while(p1<=p2)
{
q=p1+(p2-p1)/2;
if(x>=v[q])
{
p1=q+1;;
}
else
{
p2=q-1;
}
}
if(v[p2]==x)
{
fout<<p2<<"\n";
}
else
{
fout<<"-1"<<"\n";
}
}
if(w[i]==2)
{
p1=1;
p2=n;
k=-1;
while(p1<=p2)
{
q=p1+(p2-p1)/2;
if(x>=v[q])
{
p1=q+1;;
}
else
{
p2=q-1;
}
}
fout<<p2<<"\n";
}
if(w[i]==3)
{
p1=1;
p2=n;
k=-1;
while(p1<=p2)
{
q=p1+(p2-p1)/2;
if(x>v[q])
{
p1=q+1;;
}
else
{
p2=q-1;
}
}
fout<<p2<<"\n";
}
}
fin.close();
fout.close();
return 0;
}