Pagini recente » Cod sursa (job #3244805) | Cod sursa (job #3272785)
#include <fstream>
#include <algorithm>
#include <vector>
#pragma GCC optimize("O3")
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n, q, cer, x;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
cin >> q;
for (int i = 1; i <= q; i++) {
cin >> cer >> x;
if (cer == 0) {
// Căutăm ultima poziție unde apare x
auto it = upper_bound(v.begin(), v.end(), x);
if (it == v.begin() || *(it - 1) != x) {
cout << -1 << "\n";
} else {
cout << (it - v.begin()) << "\n";
}
}
else if (cer == 1) {
// Cea mai mare poziție <= x
auto it = upper_bound(v.begin(), v.end(), x);
cout << (it - v.begin()) << "\n";
}
else if (cer == 2) {
// Cea mai mică poziție >= x
auto it = lower_bound(v.begin(), v.end(), x);
cout << (it - v.begin() + 1) << "\n";
}
}
}