Cod sursa(job #202926)

Utilizator Astrid28Ruxandra Cohal Astrid28 Data 12 august 2008 11:14:46
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream.h>
#define MAX 100001

long n,m,a[MAX],x,poz;
int op;
ofstream fout("cautbin.out");


void ex_op(long p)
{
	if(op==0 || op==2)
		{
			while(a[p]==x) p++;
			fout<<p-1<<'\n';
		}
	 else
		 {
			 while(a[p]==x) p--;
			 fout<<p+1<<'\n';
		 }

}



void bin(long st, long dr)
{
	long mij;
	if(st<=dr)
		{
			mij=st+(dr-st)/2;
			if(a[mij]==x)
				ex_op(mij);
			 else
				 if(a[mij]>x)
							bin(st,mij-1);
					else
						bin(mij+1,dr);
		}
	 else
		 {
			 if(op==1)
				 fout<<dr<<'\n';
				else if(op==2)
					fout<<st<<'\n';
				 else fout<<"-1";
		 }
}



void citire()
{
	ifstream fin("cautbin.in");
	long i;
	fin>>n;
	for(i=1;i<=n;i++)
		fin>>a[i];
	fin>>m;
	for(i=1;i<=m;i++)
		{
			fin>>op>>x;
			poz=0;
			bin(1,n);
		}
}


int main()
{
	citire();
	fout.close();
	return 0;
}