Cod sursa(job #771436)

Utilizator ArmandNMArmand Nicolicioiu ArmandNM Data 25 iulie 2012 23:30:58
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,v[100010],x,limi,lims,mij,ind,i;
int caut0(int x)
{
	limi=1;
	lims=n;
	while (limi<=lims)
	{
		mij=(limi+lims)/2;
		if(v[mij]>x) lims=mij-1;
			else limi=mij+1;
	}
	if (v[mij]>x) mij--;
	if (v[mij]!=x) mij=-1;
	return mij;
}
int caut1(int x)
{
	limi=1;
	lims=n;
	while (limi<=lims)
	{
		mij=(limi+lims)/2;
		if (v[mij]<=x) limi=mij+1;
		else lims=mij-1;
	}
	if (v[mij]>x) mij--;
	return mij;
}
int caut2(int x)
{
	limi=1;
	lims=n;
	while (limi<=lims)
	{
		mij=(limi+lims)/2;
		if (v[mij]>=x) lims=mij-1;
		else limi=mij+1;
	}
	if (v[mij]<x) mij++;
	return mij;
}
int main()
{
	f>>n;
	for (i=1;i<=n;i++)
		f>>v[i];
	f>>m;
	for (i=1;i<=m;i++)
	{
		f>>ind;
		f>>x;
		if (ind==0) g<<caut0(x);
		if (ind==1) g<<caut1(x);
		if (ind==2) g<<caut2(x);
		g<<endl;
	}
	f.close(); g.close();
	return 0;
}