Cod sursa(job #2913655)
| Utilizator | Data | 15 iulie 2022 20:57:53 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.32 kb |
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout ("cautbin.out");
int n,m,v[100001];
int main(){
cin >> n;
for (int i =1; i <=n;++i)
cin >> v[i];
cin >> m;
for (int i =1 ; i <=m;++i){
int p,x,poz = -1;
cin >> p >> x;
int st = 1, dr = n;
if (p == 0){
while (st <=dr){
int mij = (st+dr)/2;
if (v[mij] == x){
poz = mij;
st = mij +1;
}
if (v[mij] > x)
dr = mij-1;
if (v[mij] < x)
st = mij+1;
}
}
if (p==1){
while (st <=dr){
int mij = (st+dr)/2;
if (v[mij] <= x){
poz = mij;
st = mij +1;
}
else
dr = mij-1;
}
}
if (p == 2){
while (st <=dr){
int mij = (st+dr)/2;
if (v[mij] >= x){
poz = mij;
dr = mij-1;
}
else
st = mij+1;
}
}
cout << poz << "\n";
}
}
