Cod sursa(job #2850008)
Utilizator | Data | 16 februarie 2022 09:29:28 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.48 kb |
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100001], i, j, n, st, dr, mid, poz, c, x, m;
int main(){
cin>>n;
for(i=1;i<=n;i++){
cin>>v[i];
}
cin>>m;
for(i=1;i<=m;i++){
cin>>c>>x;
if(c==0){
st=1;
dr=n;
poz=-1;
while(st<=dr){
int mid=(st+dr)/2;
if(v[mid]>x)
dr=mid-1;
else{
if(v[mid]<x)
st=mid+1;
else{
poz=mid;
st=mid+1;
}
}
}
cout<<poz<<"\n";
}
if(c==1){
st=1;
dr=n;
poz=-1;
while(st<=dr){
int mid=(st+dr)/2;
if(v[mid]>x)
dr=mid-1;
else{
poz=mid;
st=mid+1;
}
}
cout<<poz<<"\n";
}
if(c==2){
st=1;
dr=n;
poz=-1;
while(st<=dr){
int mid=(st+dr)/2;
if(v[mid]<x)
st=mid+1;
else{
poz=mid;
dr=mid-1;
}
}
cout<<poz<<"\n";
}
}
}