Cod sursa(job #2464659)

Utilizator StefanSanStanescu Stefan StefanSan Data 28 septembrie 2019 18:43:41
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#define NMAX 100001
using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");

int v[NMAX], n, i, Q, x, cer;

int caut0(int x)
{
	int p = 1, u = n, poz = -1;
	while (p <= u)
	{
		int m = (p + u) / 2;
		if (x == v[m])
			poz = m;
		if (x >= v[m])
			p = m + 1;
		else
			u = m - 1;
	}
	return poz;
}

int caut1(int x)
{
	int p = 1, u = n, poz = -1;
	while (p <= u)
	{
		int m = (p + u) / 2;
		if (x >= v[m])
		{
			p = m + 1;
			poz = m;
		}
		else u = m - 1;
	}
	return poz;
}

int caut2(int x)
{
	int p = 1, u = n, poz = -1;
	while (p <= u)
	{
		int m = (p + u) / 2;
		if (v[m] >= x)
		{
			u = m - 1;
			poz = m;
		}
		else p = m + 1;
	}
	return poz;
}

int main()
{
	f >> n;
	for (i = 1; i <= n; i++)
		f >> v[i];
	f >> Q;
	while (Q--)
	{
		f >> cer >> x;
		if (cer == 0)
		{
			g << caut0(x) << '\n';
		}
		else if (cer == 1)
		{
			g << caut1(x) << '\n';
		}
		else
		{
			g << caut2(x) << '\n';
		}
	}
	return 0;
}