Cod sursa(job #2551998)
Utilizator | Data | 20 februarie 2020 14:39:30 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.47 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,i,j,v[100005],k,p,mij,m,nr,x,poz;
int main()
{
f>>n;
for(i=1; i<=n; i++)
f>>v[i];
f>>m;
for(k=1; k<=m; k++)
{
f>>nr;
f>>x;
if(nr==0)
{
p=-1;
i=1;
j=n;
while(i<=j)
{
mij=(i+j)/2;
if(v[mij]==x)
{
poz=(i+j)/2;
i++;
}
else if(v[mij]>x)
j=mij-1;
else
i=mij+1;
}
g<<poz<<endl;
}
else if(nr==1)
{
i=1;
j=n;
while(i<=j)
{
mij=(i+j)/2;
if(v[mij]<=x)
{
poz=(i+j)/2;
i++;
}
else
j=mij-1;
}
g<<poz<<endl;
}
else
{
i=1;
j=n;
while(i<=j)
{
mij=(i+j)/2;
if(v[mij]>=x)
{
poz=(i+j)/2;
j--;
}
else
i=mij+1;
}
g<<poz<<endl;
}
}
}