Cod sursa(job #1579649)
Utilizator | Data | 24 ianuarie 2016 22:10:23 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.76 kb |
#include <fstream>
using namespace std;
int n,m,i,j,mij,q,w,s,d,p;
long long v[100010];
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int main()
{
fin >> n;
for (i=1;i<=n;i++)
fin >> v[i];
fin >>m;
for (i=1;i<=m;i++)
{
q=0;
w=0;
fin >> q >> w;
//for (j=1;j<=n;j++)
{
p=0;
s=1;
d=n;
while (s<=d)
{
mij=(d-s)/2+s;
if (q==0)
{
if (v[mij]==w)
{
p=mij;
s=mij+1;
}
}
if (q==1)
{
if (v[mij]<=w)
{
p=mij;
s=mij+1;
}
}
if (q==2)
{
if (v[mij]==w)
{
p=mij;
d=mij-1;
}
}
if (v[mij]<w)
{
if (q!=2)
{
d=mij-1;
}
else
s=mij+1;
}
if (v[mij]>w)
{
//if (q!=2)
s=mij+1;
// else d=mij-1;
}
}
}
if (p)
fout << p<< endl;
if (p==0 && q==0)
fout << -1;
}
return 0;
}