Cod sursa(job #1338740)

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

int bs(int start,int end,int x,int 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 v[100],n,i,x,k,p;
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;

}