Pagini recente » Cod sursa (job #2197460) | Cod sursa (job #2082957) | Cod sursa (job #360317) | Cod sursa (job #1833229) | Cod sursa (job #3212381)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define pb push_back
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int N = 1e5+3;
int n, v[N];
int bs(int), bsleq(int), bsgeq(int);
int main()
{
fin >> n; for (int i = 1; i <= n; i++) fin >> v[i];
int m; fin >> m;
while (m--){
int t, x; fin >> t >> x;
if (t == 0) fout << bs(x);
else if (t == 1) fout << bsleq(x);
else fout << bsgeq(x);
fout << '\n';
}
return 0;
}
int bs(int x){
int lo = 1, hi = n, r = 0;
while (lo <= hi){
int mi = (lo + hi) / 2;
if (v[mi] == x) r = mi, lo = mi + 1;
else if (v[mi] > x) hi = mi - 1;
else lo = mi + 1;
}
return (r?r:-1);
}
int bsleq(int x){
int lo = 1, hi = n, r = 0;
while (lo <= hi){
int mi = (lo + hi) / 2;
if (v[mi] <= x) r = mi, lo = mi + 1;
else hi = mi - 1;
}
return r;
}
int bsgeq(int x){
int lo = 1, hi = n, r = 0;
while (lo <= hi){
int mi = (lo + hi) / 2;
if (v[mi] >= x) r = mi, hi = mi - 1;
else lo = mi + 1;
}
return r;
}