Cod sursa(job #607425)

Utilizator mening12001Andrei Geogescu mening12001 Data 11 august 2011 22:38:18
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include<iostream.h>
#include<fstream.h>
int a[100000],n,o;
int search(int x,int y,int c)
{int m;
m=(x+y)/2;
if(x>y)
	o=-1;
else
	if(a[m]==c)
	o=m;
else
if(a[m]<c)
	search(m+1,y,c);
else
	if(a[m]>c)
	search(x,m-1,c);}
int search1(int x,int y,int c)
{int m;
m=(x+y)/2;
if(x>y)
	o=-1;
else
	if(a[m]<=c)
	o=m;
else
if(a[m]<c)
	search(m+1,y,c);
else
	if(a[m]>c)
	search(x,m-1,c);}
int search2(int x,int y,int c)
{int m;
m=(x+y)/2;
if(x>y)
	o=-1;
else
	if(a[m]>=c)
	o=m;
else
if(a[m]<c)
	search(m+1,y,c);
else
	if(a[m]>c)
	search(x,m-1,c);}
int main()
{ifstream f("cautbin.in");
ofstream h("cautbin.out");
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
int z,x,y;
f>>z;
for(int i=1;i<=3;i++)
{f>>x>>y;
if(x==0)
{search(1,n,y);
if(o==-1)
	h<<o<<"\n";
else
for(int j=o;j<=n;j++)
	if(a[j]!=y)
	{h<<j-1<<"\n";
		break;}}
else
if(x==1)
{search1(1,n,y);
if(o==-1)
	h<<o<<"\n";
else
for(int j=o;j<=n;j++)
	if(a[j]>y)
		{h<<j-1<<"\n";
	break;}}
else
	if(x==2)
	{search2(1,n,y);
	if(o==-1)
	h<<o<<"\n";
else
for(int j=o;j>=1;j=j-1)	
if(a[j]<y)
{h<<j+1<<"\n";
break;}}
}

return 0;}