Pagini recente » Cod sursa (job #1800941) | Cod sursa (job #738280) | Cod sursa (job #2897219) | Cod sursa (job #1235915) | Cod sursa (job #2150736)
#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) {
if (p + step <= n && v[p + step] <= val) p += step;
step /= 2;
}
return p;
}
int main()
{
in >> n;
for (int i = 1; i <= n; ++i) in >> v[i];
in >> m;
for (int i = 1, o, x, p; i <= m; ++i) {
in >> o >> x;
if (o == 0) {
p = cautare_binara(x);
if (v[p] == x) out << p << "\n";
else out << -1 << "\n";
} else if (o == 1) {
p = cautare_binara(x);
out << p << "\n";
} else {
p = cautare_binara(x - 1);
out << p + 1 << "\n";
}
}
return 0;
}