Pagini recente » Cod sursa (job #2105995) | Cod sursa (job #3205800) | Cod sursa (job #1164915) | Cod sursa (job #2416918) | Cod sursa (job #2857890)
#include <fstream>
#include <algorithm>
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;
}