Pagini recente » Cod sursa (job #1621318) | Statistici Alexandru Robert (skoda888) | Cod sursa (job #863640) | Monitorul de evaluare | Cod sursa (job #2857874)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int a[100001];
int n;
int LowerBound(int x)
{
int l = 1, r = n+1, mid;
while(l < r)
{
mid = (l + r)/2;
if( a[mid] >= x)
r = mid;
else
l = mid + 1;
}
return r;
}
int UpperBound(int x)
{
int l = 1, r = n+1, mid;
while(l < r)
{
mid = (l + r)/2;
if( a[mid] > x)
r = mid;
else
l = mid + 1;
}
return r;
}
int main()
{
in >> n;
for (int i=1; i<=n; i++)
in >> a[i];
sort (a+1, a+n+1);
int q;
in >> q;
while (q--){
int op, x;
in >> op >> x;
if (op == 0){
int poz = UpperBound(x)-1;
if (a[poz] == x)
out << poz;
else
out << -1;
}
else if (op == 1){
int poz = UpperBound(x)-1;
out << poz;
}
else{
int poz = LowerBound(x);
out << poz;
}
out << '\n';
}
return 0;
}