Pagini recente » Cod sursa (job #1959786) | Cod sursa (job #732288) | Cod sursa (job #2634026) | Cod sursa (job #909441) | Cod sursa (job #1331993)
#include <fstream>
#define Nmax 100100
using namespace std;
int Step, N, A[Nmax];
int upperBound(int value) {
int left, right, middle;
left = 0;
right = N;
while(right - left > 1) {
middle = left + (right - left) / 2;
if(A[middle] <= value)
left = middle;
else
right = middle;
}
return (left + 1);
}
void Read(ifstream & in) {
in >> N;
for(int i = 0; i < N; i++)
in >> A[i];
}
int main() {
int x, index, type, queries;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
Read(in);
in >> queries;
while(queries--) {
in >> type >> x;
switch(type) {
case 0:
out << (A[index = upperBound(x) - 1] == x ? (index + 1) : -1);
break;
case 1:
out << (upperBound(x));
break;
case 2:
out << (upperBound(x - 1)) + 1;
}
out << '\n';
}
in.close();
out.close();
return 0;
}