Cod sursa(job #683321)

Utilizator Kaara333Stircu Daniela Kaara333 Data 20 februarie 2012 14:26:28
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<fstream>
using namespace std;
int p0(long b, long v[], long n)
{
	int m,s,d;
	s=1; d=n;
	while(s<=d)
	{
		m=(s+d)/2;
		if(b==v[m] && b<v[m+1])
			s=d+1;
		else
			if(b<v[m])
				d=m-1;
			else
				s=m+1;
	}
	if(v[m]==b)
		return m;
	else
		return -1;
}

int p1(long b, long v[],long n)
{
	int m,s,d;
	s=1; d=n;
	while(s<=d)
	{
		m=(s+d)/2;
		if(b==v[m] && b<v[m+1])
			s=d+1;
		else
			if(b<v[m])
				d=m-1;
			else
				s=m+1;
	}
	return m;
}
int p2(long b, long v[],long n)
{
	int m,s,d;
	s=1; d=n;
	while(s<=d)
	{
		m=(s+d)/2;
		if(b==v[m] && b>v[m-1])
			s=d+1;
		else
			if(b<=v[m])
				d=m-1;
			else
				s=m+1;
	}
	return m;
}
int p2()
{
}
int main()
{
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	long n,m,v[100001],a,b,i;
	f>>n;
	for(i=1; i<=n; i++)
		f>>v[i];
	f>>m;
	for(i=1; i<=m; i++)
	{
		f>>a;
		f>>b;
		if(a==0)
			g<<p0(b,v,n);
		else
			if(a==1)
				g<<p1(b,v,n);
			else
				g<<p2(b,v,n);
		g<<'\n';
	}
	f.close();
	g.close();
}