Pagini recente » Cod sursa (job #2069307) | Cod sursa (job #2246925) | Cod sursa (job #516328) | Cod sursa (job #2734552) | Cod sursa (job #2213936)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int MAXN = 1e5;
const int MAXM = 1e5;
int v[MAXN + 2];
int n, m;
int binary_search(int nr) {
int add = (1 << 20);
int cur = 0;
while (add) {
if (v[cur + add] <= nr && cur + add <= n) cur += add;
add >>= 1;
}
return cur;
}
int main() {
in >> n;
for (int i = 1; i <= n; ++ i) {
in >> v[i];
}
sort(v + 1, v + n + 1);
in >> m;
int q, nr;
for (int i = 1; i <= m; ++ i) {
in >> q >> nr;
int find;
if (q == 0) {
find = binary_search(nr);
if(v[find] == nr)
out << find << '\n';
else
out << -1 << '\n';
}
if (q == 1) {
find = binary_search(nr);
out << find << '\n';
}
if (q == 2) {
find = binary_search(nr - 1);
out << find + 1 << '\n';
}
}
return 0;
}