Pagini recente » Cod sursa (job #2773626) | Cod sursa (job #808500) | Cod sursa (job #2769551) | Cod sursa (job #2190581) | Cod sursa (job #2769349)
#include <bits/stdc++.h>
using namespace std;
string __fname = "cautbin"; ifstream in (__fname + ".in"); ofstream out (__fname + ".out");
#define cin in
#define cout out
vector <int> a;
vector <int> out1;
int zero(int target){
int l = 0, r = a.size() - 1, mid;
int ans = -1;
while (l <= r){
mid = l + (r - l) / 2;
if (a[mid] == target){
ans = mid;
l = mid + 1;
}
if (a[mid] > target) r = mid - 1;
if (a[mid] < target) l = mid + 1;
}
return ans;
}
int one(int target){
int l = 0, r = a.size() - 1, mid;
int ans = -1;
while (l <= r){
mid = l + (r - l) / 2;
if (a[mid] <= target){
ans = mid;
l = mid + 1;
}
else r = mid - 1;
}
return ans;
}
int two(int target){
int l = 0, r = a.size() - 1, mid;
int ans = -1;
while (l <= r){
mid = l + (r - l) / 2;
if (a[mid] >= target){
ans = mid;
r = mid - 1;
}
else l = mid + 1;
}
return ans;
}
int main(){
int n, m, l, x;
cin >> n;
for (int i = 0; i < n; i++){
int t;
cin >> t;
a.push_back(t);
}
cin >> m;
for (int i = 0; i < m; i++){
cin >> l >> x;
if (l == 0){
int z = zero(x);
out1.push_back(z);
}
if (l == 1){
int z = one(x);
out1.push_back(z);
}
if (l == 2){
int z = two(x);
out1.push_back(z);
}
}
for (int i = 0; i < out1.size(); i++){
cout << out1[i] + 1 << '\n';
}
return 0;
}