Cod sursa(job #306033)

Utilizator alexandru92alexandru alexandru92 Data 19 aprilie 2009 14:38:18
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#include<stdlib.h>
int *v,x;
inline int search(int st,int dr,int q)
{
	if(dr>=st)
	  {int m=st+(dr-st)/2;
	   switch(q)
		 {
		  case 0 : if(x==v[m]) return m;break;
		  case 2 : if(x<=v[m]) return m;break;
		  case 1 : if(x>=v[m]) return m;break;
	    }
	   if(x<v[m]) return search(st,m-1,q);
	   return search(m+1,dr,q);
	  }
	return -1;
}
int main()
{int i,n,m,q;
	freopen("cautbin.in","rt",stdin);
	freopen("cautbin.out","wt",stdout);
	scanf("%d",&n); v=(int*)calloc(n+1,sizeof(n));
	for(i=1;i<=n;++i) scanf("%d",&v[i]);
	scanf("%d",&m);
	while(m)
	     {scanf("%d%d",&q,&x);
	      printf("%d\n",search(1,n,q));
	      --m;
	     }
	return 0;
}