Pagini recente » Cod sursa (job #2217933) | Cod sursa (job #1195855) | Cod sursa (job #1811078) | Cod sursa (job #262513) | Cod sursa (job #2917427)
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, M;
/*
int search(int q, int s, int e, int x) {
int p = -1;
while (s <= e) {
//cout << s << ' ' << e << '\n';
int m = (s + e) / 2;
if (q <= 1) {
if (v[m] <= x) {
p = m;
s = m + 1;
}
else {
e = m - 1;
}
} else {
if (v[m] >= x) {
p = m;
e = m - 1;
} else {
s = m + 1;
}
}
}
if (p == -1)
return -1;
if (q <= 1)
return v[p] == x || q == 1 ? p : -1;
return p;
}
*/
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
vector<int> v;
f >> N;
for (int i = 1; i <= N; i++) {
int x;
f >> x;
v.push_back(x);
}
f >> M;
for (int i = 1; i <= M; i++) {
int q, x;
f >> q >> x;
//g << search(q, 1, N, x) << ' ';
if (q <= 1) {
auto it = std::upper_bound(v.begin(), v.end(), x);
if (it == v.begin()) {
g << -1 << '\n';
} else {
--it;
if (q == 0 && *it != x) {
g << -1 << '\n';
} else {
g << (it - v.begin() + 1) << '\n';
}
}
} else {
auto it = std::lower_bound(v.begin(), v.end(), x);
g << (it - v.begin() + 1) << '\n';
}
}
f.close();
g.close();
return 0;
}