Pagini recente » Cod sursa (job #253472) | Cod sursa (job #2332748)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int num[100001];
int N;
int binSearch(int x) {
int i;
int step;
for (step = 1; step < N; step <<= 1);
for (i = 0; step; step >>= 1) {
if (i + step <= N && num[i + step - 1] <= x) {
i += step;
}
}
return i;
}
int main() {
in >> N;
for (int i = 0; i < N; i++) {
in >> num[i];
}
int M;
in >> M;
int query;
int numberToFind;
while (M) {
in >> query >> numberToFind;
int find;
if (query == 0) {
find = binSearch(numberToFind);
if (num[find - 1] == numberToFind) {
out << find << "\n";
} else {
out << "-1\n";
}
}
if (query == 1) {
find = binSearch(numberToFind);
out << find << "\n";
}
if (query == 2) {
find = binSearch(numberToFind - 1);
out << find + 1 << "\n";
}
M--;
}
return 0;
}