Cod sursa(job #1372671)

Utilizator MariusMarinescuMarius Marinescu MariusMarinescu Data 4 martie 2015 14:55:28
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
using namespace std;
int f1(int v[100],int end,int x,int start)
{
	int mid=(start+end)/2;
	if(x>end)
		return -1;
	if(x>mid)
		return f1(v,end,x,mid);
	if(x<mid)
		return f1(v,mid,x,1);
	else
		return mid;
}
int main()
{
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	int n,i,v[100],x,a,j,b,m;
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];
	f>>m;
	for(j=1;j<=m;j++)
	{
		f>>b;
		f>>x;
		a=f1(v,n,x,1);
		if(b==0)
		{
			i=a;
			while(a==v[i])
				i++;
			g<<i-1<<'\n';
		}
		if(b==1)
		{
			i=a;
			while(v[i]<=x)
				i++;
			g<<i-1<<'\n';
		}
		if(b==2)
		{
			i=a;
			while(v[i]>=x)
				i--;
			g<<i+1<<'\n';
		}
	}
	return 0;
}