Cod sursa(job #376960)

Utilizator kojocojocaru aurelian kojo Data 22 decembrie 2009 22:55:46
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream.h>
ifstream f("cautbin.in");
ofstream g("cautbin.out");
#define max 100001
int n,m,a[max];

int cautbin(int x)
{int in=1,sf=n,mj;
 while(in<=sf)
	{mj=(in+sf)/2;
	 if(x<a[mj])
		 sf=mj-1;
	 else
		 if(x>a[mj])
			 in=mj+1;
		 else return mj;
		
	}
 return mj;
}
int main()
{int i,y,x,q,r,t;
f>>n;
for(i=1;i<=n;i++)
   f>>a[i];
f>>m;
for(i=1;i<=m;i++)
	{f>>y>>x;
     q=r=t=cautbin(x);
     if(y==0)
		{if(a[t]==x)
			 while(a[t]==x&&t<=n)
				 t++;
			 g<<t-1<<'\n';
		}
	 if(y==1)
		{ q-=1;while(a[q]<=x&&q<=n)
			 q++;
		 g<<q-1<<'\n';
		}
	 if(y==2)
	 {while(a[r]>=x)
	           r--;
	 g<<r+1<<'\n';
	  
	 }
	}
return 0;
}