Cod sursa(job #2168422)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 14 martie 2018 10:53:50
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
const int NMAX = 100005;
int a[NMAX], n;
int binar1(int x)
{
	int st = 1;
	int dr = n;
	int mij;
	while (st <= dr)
	{
		mij = (st + dr) / 2;
		if (a[mij] <= x)
			st = mij + 1;
		else
			dr = mij - 1;
	}
	mij = (st + dr) / 2;
	if (a[mij] > x)
		mij--;
	if (a[mij] == x)
		return mij;
	return -1;
}
int binar2(int x)
{
	int st = 1;
	int dr = n;
	int mij;
	while (st < dr)
	{
		mij = (st + dr) / 2;
		if (a[mij] <= x)
			st = mij + 1;
		else
			dr = mij;
	}
	mij = (st + dr) / 2;
	if (a[mij] > x)
			mij--;
	return mij;
}
int binar3(int x)
{
	int st = 1;
	int dr = n;
	int mij;
	while (st < dr)
	{
		mij = (st + dr) / 2;
		if (a[mij] < x)
			st = mij + 1;
		else
			dr = mij;
	}
	mij = (st + dr) / 2;
	if (a[mij] < x)
		mij++;
	return mij;
}
int main()
{
	f >> n;
	for (int i = 1; i <= n; i++)
		f >> a[i];
	int m;
	f >> m;
	for (int i = 1; i <= m; i++)
	{
		int v, k;
		f >> v >> k;
		if (v == 0)
			g << binar1(k) << "\n";
		else
			if (v == 1)
				g << binar2(k) << "\n";
			else
				g << binar3(k) << "\n";
	}
}