Cod sursa(job #1579677)
Utilizator | Data | 24 ianuarie 2016 22:44:15 | |
---|---|---|---|
Problema | Cautare binara | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.49 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 (w<v[mij])
d=mij-1;
else s=mij+1;
}
if (q==1)
{
if (v[mij]<=w)
{
p=mij;
s=mij+1;
}
else
d=mij-1;
}
if (q==2)
{
if (v[mij]>=w)
{
p=mij;
d=mij-1;
}
else
s=mij+1;
}
}
}
if (p)
fout << p<<"\n";
if (p==0 && q==0)
fout << -1<<"\n";
}
return 0;
}