Mai intai trebuie sa te autentifici.
Cod sursa(job #2482236)
Utilizator | Data | 27 octombrie 2019 22:09:57 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.78 kb |
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int v[MAXN];
int cb(int l, int r, int x) {
int last = 0;
while (l <= r) {
int med = (l + r) / 2;
if (v[med] <= x) {
last = med;
l = med + 1;
} else {
r = med - 1;
}
}
return last;
}
int main() {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int n, m;
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &v[i]);
scanf("%d", &m);
for (int i = 1; i <= m; ++i) {
int t, x, last;
scanf("%d%d", &t, &x);
if (t <= 1)
last = cb(1, n, x);
else
last = cb(1, n, x - 1) + 1;
if (t == 0 && v[last] != x)
last = -1;
printf("%d\n", last);
}
return 0;
}