Pagini recente » Cod sursa (job #22342) | Cod sursa (job #20867) | Cod sursa (job #321016) | Cod sursa (job #3177767) | Cod sursa (job #3288530)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int MAXN = 1e5;
const int MAXM = 1e5;
int n, m;
int v[MAXN + 1];
int cb(int nr)
{
int ret = 0;
int add = 1 << 16;
while (add)
{
if (ret + add <= n && v[ret + add] < nr)
ret += add;
add >>= 1;
}
return ret;
}
int main()
{
in >> n;
for (int i = 1; i <= n; ++i)
in >> v[i];
in >> m;
int t, x, ans;
for (int i = 1; i <= m; ++i)
{
in >> t >> x;
if (t == 0)
{
ans = cb(x + 1);
if (ans == 0 || v[ans] != x)
out << -1 << '\n';
else
out << ans << '\n';
}
if (t == 1)
{
ans = cb(x + 1);
out << ans << '\n';
}
if (t == 2)
{
ans = cb(x);
++ans;
out << ans << '\n';
}
}
return 0;
}