Pagini recente » Cod sursa (job #1365852) | Cod sursa (job #661569) | Cod sursa (job #2070191) | Cod sursa (job #3126043) | Cod sursa (job #2218580)
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100001];
int cautbin (int val, int n){
int pos = 0, i;
for (i = 20; i >= 0; i--) {
if ((pos + (1 << i) <= n) && (a[pos + (1 << i)] <= val)) {
pos += (1 << i);
}
}
return pos;
}
int main() {
int t, n, m, x, i, poz;
f >> n;
for (i = 1; i <= n; i++)
f >> a[i];
f >> m;
for (i = 1; i <= m; i++) {
f >> t >> x;
if (t == 0) {
poz = cautbin(x, n);
if (a[poz] == x)
g << poz << endl;
else
g << -1 << endl;
}
if (t == 1) {
g << cautbin(x, n) << endl;
}
if (t == 2) {
g << cautbin(x - 1, n) + 1 << endl;
}
}
return 0;
}