Pagini recente » Cod sursa (job #880074) | Cod sursa (job #2190625) | Cod sursa (job #2146872) | Cod sursa (job #2105628) | Cod sursa (job #2213937)
#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 (cur + add <= n && v[cur + add] <= nr) 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;
}