Pagini recente » Cod sursa (job #326402) | Cod sursa (job #1751823) | Cod sursa (job #106697) | Cod sursa (job #2781960) | Cod sursa (job #2966406)
#include <iostream>
#include <fstream>
using namespace std;
ofstream fout("cautbin.out");
int sir[100009], n;
int cautare_0(int stanga, int dreapta, int val) {
int mijloc;
while(stanga < dreapta) {
mijloc = (stanga + dreapta) / 2;
if(sir[mijloc] > val) {
dreapta = mijloc - 1;
}
else {
stanga = mijloc + 1;
}
}
mijloc = (stanga + dreapta) / 2;
if(sir[mijloc] > val) {
mijloc--;
}
if(sir[mijloc] == val) {
return mijloc;
}
return -1;
}
int cautare_1(int stanga, int dreapta, int val) {
int mijloc;
while(stanga < dreapta) {
mijloc = (stanga + dreapta) / 2;
if(sir[mijloc] <= stanga) {
stanga = mijloc + 1;
}
else {
dreapta = mijloc;
}
}
mijloc = (stanga + dreapta) / 2;
if(sir[mijloc] > val)
--mijloc;
return mijloc;
}
int main()
{
int teste, val;
cin >> n;
for(int i = 1; i <= n; ++i) {
cin >> sir[i];
}
cin >> teste;
for(int i = 0; i < teste; ++i) {
int l;
cin >> l >> val;
if(l == 0) {
cout << cautare_0(1, n, val);
}
else if(l == 1) {
cout << cautare_1(1, n, val);
}
}
return 0;
}