Pagini recente » Cod sursa (job #1372962) | Cod sursa (job #2621308) | Cod sursa (job #376854) | Cod sursa (job #271905) | Cod sursa (job #2396832)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001];
int main()
{
int n, m, c, val;
in >> n;
for (int i = 1; i <= n; ++i)
in >> v[i];
sort(v + 1, v + n + 1);
in >> m;
for (int q = 1; q <= m; ++q)
{
in >> c >> val;
if (c == 0)
{
int lg, i;
for (lg = 1; lg <= n; lg <<= 1);
for (i = 1; lg; lg >>= 1)
{
if (i + lg <= n && v[i + lg] <= val)
i += lg;
}
if (v[i] != val)
out << -1;
else
out << i;
}
else if (c == 1)
{
int lg, i;
for (lg = 1; lg <= n; lg <<= 1);
for (i = 1; lg; lg >>= 1)
{
if (i + lg <= n && v[i + lg] <= val)
i += lg;
}
if (v[i] > val)
out << -1;
else
out << i;
}
else
{
int lg, i;
for (lg = 1; lg <= n; lg <<= 1);
for (i = n; lg; lg >>= 1)
{
if (i - lg >= 1 && v[i - lg] >= val)
i -= lg;
}
if (v[i] < val)
out << -1;
else
out << i;
}
out << '\n';
}
return 0;
}