Pagini recente » Cod sursa (job #3252445) | Cod sursa (job #3137129) | Cod sursa (job #181133) | Cod sursa (job #1029643) | Cod sursa (job #3288532)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5;
const int MAXM = 1e5;
int cb(int nr, vector<int> &v)
{
int acc = 0, pow2 = 1 << 16;
while (pow2)
{
if (acc + pow2 < v.size() && v[acc + pow2] < nr)
acc += pow2;
pow2 >>= 1;
}
return acc;
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int n, m;
cin >> n;
vector<int> v(n + 1);
v[0] = 0;
for (int i = 1; i <= n; ++i)
cin >> v[i];
cin >> m;
int op, x;
int index;
while (m--)
{
cin >> op >> x;
if (op == 0)
{
index = cb(x + 1, v);
if (index == 0 || v[index] != x)
cout << -1 << '\n';
else
cout << index << '\n';
}
if (op == 1)
{
index = cb(x + 1, v);
cout << index << '\n';
}
if (op == 2)
{
index = cb(x, v);
cout << index + 1 << '\n';
}
}
return 0;
}