Pagini recente » Cod sursa (job #3213453) | Cod sursa (job #689074) | Cod sursa (job #2278225) | Cod sursa (job #2231052) | Cod sursa (job #2150727)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int L = 1 << 16;
int n, m;
int v[100005];
int cautare_binara(int val) {
int step = L;
int p = 0;
while (step != 0) {
int leap = p + step;
if (leap < n && v[leap] <= val) {
p = leap;
}
step >>= 1;
}
return p;
}
int main()
{
in >> n;
for (int i = 0; i < n; ++i) in >> v[i];
in >> m;
for (int i = 1, o, x; i <= m; ++i) {
in >> o >> x;
if (o == 0) {
int p = cautare_binara(x);
if (v[p] == x) out << p + 1 << "\n";
else out << -1 << "\n";
} else if (o == 1) {
int p = cautare_binara(x);
out << p + 1 << "\n";
} else if (o == 2) {
int p = cautare_binara(x - 1);
out << p + 2 << "\n";
}
}
return 0;
}