Cod sursa(job #1896931)

Utilizator trifangrobertRobert Trifan trifangrobert Data 28 februarie 2017 23:54:32
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>

using namespace std;

int n, m, v[100005];
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int Cerinta_0(int x);
int Cerinta_1(int x);
int Cerinta_2(int x);

int Cerinta_0(int x)
{
	int st = 1, dr = n, poz = -1;
	while (st <= dr)
	{
		int mij = (st + dr) / 2;
		if (x == v[mij])
		{
			poz = mij;
		}
		if (x >= v[mij])
		{
			st = mij + 1;
		}
		else
		{
			dr = mij - 1;
		}
	}
	return poz;
}

int Cerinta_1(int x)
{
	int st = 1, dr = n, poz = -1;
	while (st <= dr)
	{
		int mij = (st + dr) / 2;
		if (x >= v[mij])
		{
			st = mij + 1;
			poz = mij;
		}
		else
		{
			return poz;
		}

	}
}

int Cerinta_2(int x)
{
	int st = 1, dr = n, poz = -1;
	while (st <= dr)
	{
		int mij = (st + dr) / 2;
		if (x <= v[mij])
		{
			dr = mij - 1;
			poz = mij;
		}
		else
		{
			return poz;
		}

	}
}

int main()
{	
	f >> n;
	for (int i = 1;i <= n;i++)
		f >> v[i];
	f >> m;
	int val, x;
	for (int i = 1;i <= m;i++)
	{
		f >> val >> x;
		switch (val)
		{
		case 0:
			g << Cerinta_0(x);
			break;
		case 1:
			g << "\n" << Cerinta_1(x);
			break;
		case 2:
			g << "\n" << Cerinta_2(x);
			break;
		}
	}
	f.close();
	g.close();
	return 0;
}