Pagini recente » Cod sursa (job #1785061) | Cod sursa (job #1681685) | Cod sursa (job #1256807) | Cod sursa (job #1698648) | Cod sursa (job #1252689)
#include <fstream>
#define Nmax 100100
using namespace std;
int logN, N, M, A[Nmax];
int binarySearch(int Value) {
int i, Step = logN;
for(i = 0; Step; Step >>= 1)
if(i + Step <= N && A[i + Step] <= Value)
i += Step;
return i;
}
void Read(ifstream & in) {
in >> N;
for(int i = 1; i <= N; i++)
in >> A[i];
in >> M;
}
int main() {
int x, index, type;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
Read(in);
for(logN = 1; logN <= N; logN <<= 1);
while(M--) {
in >> type >> x;
switch(type) {
case 0:
index = binarySearch(x);
out << (A[index] != x ? -1 : index);
break;
case 1:
index = binarySearch(x);
out << index;
break;
case 2:
index = binarySearch(x - 1);
out << (index + 1);
}
out << '\n';
}
in.close();
out.close();
return 0;
}