Pagini recente » Cod sursa (job #2959817) | Cod sursa (job #895299) | Cod sursa (job #1978673) | Cod sursa (job #512859) | Cod sursa (job #2787988)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int a[100005];
/*
int main()
{
int N, i, logN; fin >> N;
for (i = 1; i <= N; ++i) cin >> a[i];
for (logN = 1; logN <= N; logN <<= 1);
int M, lg; fin >> M;
for (int q, x; M; --M)
{
fin >> q >> x;
if (q < 2)
{
for (lg = logN, i = 0; lg; lg >>= 1)
if (i + lg <= N && a[i + lg] <= x) i += lg;
if (!q && a[i] != x) cout << -1 << '\n';
else cout << i << '\n';
}
else
{
for (int lg = logN, i = N; lg; lg >>= 1)
if (i - lg >= 1 && a[i - lg] >= x) i -= lg;
cout << i << '\n';
}
}
return 0;
}
*/
int main()
{
int N; fin >> N;
for (int i = 1; i <= N; ++i) fin >> a[i];
sort(a + 1, a + N + 1);
int M; fin >> M;
for (int i = 1, q, x, y; i <= M; ++i)
{
fin >> q >> x;
if (!q)
{
y = upper_bound(a + 1, a + N + 1, x) - a - 1;
if (y >= 1 && y <= N && a[y] == x) fout << y << '\n';
else fout << -1 << '\n';
}
else if(q == 1)
{
y = lower_bound(a + 1, a + N + 1, x + 1) - a - 1;
fout << y << '\n';
}
else
{
y = upper_bound(a + 1, a + N + 1, x - 1) - a;
fout << y << '\n';
}
}
return 0;
}