Cod sursa(job #245044)

Utilizator ktalyn93Catalin ktalyn93 Data 16 ianuarie 2009 16:59:17
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>
int n,i,a[100],x,m,p;
int cautbin()
{
    int m1,m2;
    m1=1;
    m2=n;
    while(x!=a[m1+(m2-m1)/2] && m2-m1>1)
    {
		if(x>=a[m1+(m2-m1)/2])
		 m1=m1+(m2-m1)/2;
		 else
		 if(x<=a[m1+(m2-m1)/2])
		  m2=m1+(m2-m1)/2;
    }

    return m1+(m2-m1)/2;
}
  
                
int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++) scanf("%d",&a[i]);
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
		     scanf("%d %d",&p,&x);
                     if(p==0)
                     {
			     printf("%d\n",cautbin());
		     }
		     if(p==1)
		     {
			printf("%d\n",cautbin());
		     }
		     if(p==2)
		     {
			printf("%d\n",cautbin()+1);
		     }
    }

    return 0;
}