Cod sursa(job #1768924)

Utilizator Joystick6208Catalin Topala Joystick6208 Data 1 octombrie 2016 18:18:03
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int main()
{

	int n, m, t, x, y;

	freopen("cautbin.in", "r", stdin);
	freopen("cautbin.out", "w", stdout);

	scanf("%d", &n);
	int num[n];
	for(int i = 0; i < n; ++i)
		scanf("%d", num + i);

	sort(num, num + n);

	scanf("%d", &m);
	while(m--)
	{
		scanf("%d%d", &t, &x);

		if(t == 0)
		{
			y = upper_bound(num, num + n, x) - num;

            if(num[y-1] == x)
				printf("%d\n", y);
			else
				printf("-1\n");
		}
		else if(t == 1)
		{
			y = lower_bound(num, num + n, x + 1) - num;
			printf("%d\n", y);
		}
		else
		{
			y = upper_bound(num, num + n, x - 1) - num + 1;
			printf("%d\n", y);
		}
	}

	return 0;
}