Cod sursa(job #2462392)
| Utilizator | Data | 27 septembrie 2019 11:18:12 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.28 kb |
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int st,dr,mid,v[100001],m,n,tip,i,x;
int main(){
cin >> n;
for(i=1;i<=n;i++)
cin >> v[i];
cin >> m;
for(i=1;i<=m;i++){
cin >> tip >> x;
switch(tip){
case 0:
st=1; dr=n;
while(st<=dr){
int mid=(st+dr)/2;
if(x>=v[mid])
st=mid+1;
else
dr=mid-1;
}
if(dr>0 && v[dr]==x)
cout << dr << "\n";
else
cout << "-1" << "\n";
break;
case 1:
st=1; dr=n;
while(st<=dr){
int mid=(st+dr)/2;
if(x>=v[mid])
st=mid+1;
else
dr=mid-1;
}
if(dr>0 && v[dr]==x)
cout << dr << "\n";
break;
case 2:
st=1; dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]<x)
st=mid+1;
else
dr=mid-1;
}
cout << st << "\n";
break;
}
}
}
