Pagini recente » Cod sursa (job #3287922) | Cod sursa (job #1710283) | Cod sursa (job #2884547) | Cod sursa (job #2175375) | Cod sursa (job #1329024)
#include <fstream>
#define Nmax 100100
using namespace std;
int N, A[Nmax];
int binarySearch(int value) {
int i, step;
for(step = 1; step < N; step <<= 1);
for(i = 0; step != 0; step >>= 1)
if(i + step <= N && A[i + step] <= value)
i += step;
return i;
}
int main() {
int i, x, type, queries;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in >> N;
for(i = 1; i <= N; i++)
in >> A[i];
in >> queries;
while(queries--) {
in >> type >> x;
switch(type) {
case 0:
i = binarySearch(x);
out << (A[i] == x ? i : -1);
break;
case 1:
out << binarySearch(x);
break;
case 2:
out << (binarySearch(x - 1) + 1);
}
out << '\n';
}
in.close();
out.close();
return 0;
}