Cod sursa(job #444231)

Utilizator bumble.beeBuhai Diana bumble.bee Data 19 aprilie 2010 19:50:06
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
# include <fstream>
using namespace std;
int main ()
{
	long sir[100001],n,x,m,i,st=1,dr=n,mijl,sol=0,so,ok;
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	f>>n;
	for (i=1;i<=n;i++)
		f>>sir[i];
	f>>m;
	for (i=1;i<=m;i++)
	{	ok=0;
		st=1;dr=n;sol=0;
		f>>so>>x;
		if (so==0)
		{	while (st<=dr) {mijl=st+(dr-st)/2;
			if (sir[mijl]==x) {st=mijl+1;sol=mijl;ok=1;}
			else 
				if (sir[mijl]<x) st=mijl+1;
				else dr=mijl-1;}
			if (ok==0) g<<"-1"<<'\n';
			else g<<sol<<'\n';
		}
		else if (so==1)
		{	while (st<=dr) {mijl=st+(dr-st)/2;
			if (sir[mijl]<=x) {st=mijl+1;sol=mijl;}
			else dr=mijl-1;}
			g<<sol<<'\n';
		}
		else
		{	while (st<=dr)
			{	mijl=st+(dr-st)/2;
				if (sir[mijl]>=x) {dr=mijl-1;sol=mijl;}
				else st=mijl+1;
			}
			g<<sol<<'\n';
		}
	}
	f.close ();
	g.close ();
	return 0;
}