Cod sursa(job #869561)
Utilizator | Data | 1 februarie 2013 19:46:12 | |
---|---|---|---|
Problema | Cautare binara | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.16 kb |
#include<iostream>
#include<fstream>
using namespace std;
int n,x,v[100000],j,m,k,tip,val;
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for (int i=1;i<=n;i++)
f>>v[i];
f>>k;
for(j=1;j<=k;j++)
{
f>>tip>>x;
int st=0, dr=n+1;
if(tip==0)
{
while(st+1<dr)
{
m=(st+dr)/2;
if(x<v[m])
dr=m;
else
st=m;
}
if(v[st]==x)
g<<st<<endl;
else g<<"-1"<<endl;
}
else
if(tip==1)
{
while(st+1<dr)
{
m=(st+dr)/2;
if(x>=v[m])
st=m;
else
dr=m;
}
g<<st<<endl;
}
else
if(tip==2)
{
while(st+1<dr)
{
m=(st+dr)/2;
if(x<=v[m])
dr=m;
else
st=m;
}
g<<dr<<endl;
}
}
return 0;
}