Cod sursa(job #1338750)

Utilizator MariusMarinescuMarius Marinescu MariusMarinescu Data 10 februarie 2015 12:38:19
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int bs(int start,int end,int x,short v[100])
{
	int mid;
	if(start>end)
		return -1;
	
	mid=(start+end)/2;
	if(v[mid]==x)
		return mid;
	
	if(mid>x)
		return bs(start,mid-1,x,v);
	
	if(mid<x)
		return bs(mid+1,end,x,v);
	
}
int main()
{
int n,i,x,k,p;
short v[100];
int m;
f>>n;

for(i=1;i<=n;i++)
	f>>v[i];
f>>m;

for(i=1;i<=m;i++)
{	f>>p>>x;
	
	if(p==0)
	{	k=bs(1,n,x,v);
		while(v[k]==x)
			k++;
	k--;	
	g<<k<<'\n';
	}
	else
		if(p==1)
		{
			k=bs(1,n,x,v);
				while(v[k]<=x)
					k++;
			k--;	
			g<<k<<'\n';
		}
		else
			if(p==2)
			{
				k=bs(1,n,x,v);
				while(v[k]>=x)
					k--;
				
				g<<k<<'\n';
			}
}
f.close();
g.close();
return 0;

}