Cod sursa(job #1610847)
Utilizator | Data | 23 februarie 2016 19:29:59 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.34 kb |
#include <fstream>
using namespace std;
int n, i, st, dr, mid, a, b, t, v[100003];
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
fin>>t;
for(i=1;i<=t;i++){
fin>>a>>b;
if(a==0){
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]>b)
dr=mid-1;
else
st=mid+1;
}
if(v[st-1]==b)
fout<<st-1<<"\n";
else
fout<<-1<<"\n";
}
else{
if(a==1){
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]>b)
dr=mid-1;
else
st=mid+1;
}
fout<<st-1<<"\n";
}
else{
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]>=b)
dr=mid-1;
else
st=mid+1;
}
fout<<st<<"\n";
}
}
}
return 0;
}