Pagini recente » Cod sursa (job #1964410) | Cod sursa (job #3351359) | Cod sursa (job #3309149) | Cod sursa (job #3355312) | Cod sursa (job #3341540)
#include <bits/stdc++.h>
using namespace std;
int n, v[100005];
void q0(int x) {
int ans = 0;
for(int pas = 1 << 17; pas; pas >>= 1) {
if(ans + pas <= n && v[ans + pas] <= x) {
ans += pas;
}
}
if(v[ans] == x)
cout << ans << '\n';
else
cout << "-1\n";
}
void q1(int x) {
int ans = 0;
for(int pas = 1 << 17; pas; pas >>= 1) {
if(ans + pas <= n && v[ans + pas] <= x) {
ans += pas;
}
}
cout << ans << '\n';
}
void q2(int x) {
int ans = n;
for(int pas = 1 << 17; pas; pas >>= 1) {
if(ans >= pas && v[ans - pas] >= x) {
ans -= pas;
}
}
cout << ans << '\n';
}
signed main() {
cin.tie(nullptr)->sync_with_stdio(false);
#ifndef LOCAL
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
#endif
cin >> n;
for(int i = 1; i <= n; ++i)
cin >> v[i];
int m; cin >> m;
while(m--) {
int op, x; cin >> op >> x;
if(op == 0)
q0(x);
else if(op == 1)
q1(x);
else
q2(x);
}
return 0;
}