Pagini recente » Cod sursa (job #1657586) | Borderou de evaluare (job #1567126) | Cod sursa (job #2129380) | Cod sursa (job #2173095) | Cod sursa (job #2786542)
#include <fstream>
using namespace std;
ifstream cin ( "cautbin.in" );
ofstream cout ( "cautbin.out" );
#define NMAX 100000
int v[NMAX];
int main() {
int n, i, p2, q, op, x, pas, st;
cin >> n;
for ( i = 0; i < n; i++ ) {
cin >> v[i];
}
cin >> q;
p2 = 1 << 17;
for ( i = 1; i <= q; i++ ) {
cin >> op >> x;
pas = p2;
st = 0;
if ( op == 0 ) {
for (; pas; pas >>= 1) {
if ( st + pas <= n && v[st + pas] <= x) {
st += pas;
}
}
if ( v[st] == x )
cout << st + 1 << "\n";
else
cout << "-1\n";
} else if ( op == 1 ) {
for (; pas; pas >>= 1) {
if (st + pas <= n && v[st + pas] <= x) {
st += pas;
}
}
cout << st + 1 << "\n";
} else {
for (; pas; pas >>= 1) {
if (st + pas <= n && v[st + pas] < x) {
st += pas;
}
}
if ( v[st] >= x ) {
cout << st + 1 << "\n";
} else
cout << st + 2 << "\n";
}
}
return 0;
}