Cod sursa(job #245080)

Utilizator ktalyn93Catalin ktalyn93 Data 16 ianuarie 2009 18:48:07
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <stdio.h>
int n,i,a[100],x,m,p;
int cautbin(int m1,int m2)
{
    int mij;
    while(m1<m2)
    {
	mij=(m1+m2)/2;
	if(x>a[mij])
	 m1=mij+1;
	 else
	m2=mij;
	
    }
    if(x==a[m1])
     return m1;
     else
     return -1;
 }
  
int cautbin2(int m1,int m2)
{
    int mij;
    while(m1<m2)
    {
	mij=(m1+m2)/2;
	if(x>a[mij])
	 m1=mij+1;
	 else
	m2=mij;
	
    }
    if(x==a[m1])
     return m1;
     else
     return m1-1;
 }
 int cautbin3(int m1,int m2)
{
    int mij;
    while(m1<m2)
    {
	mij=(m1+m2)/2;
	if(x>a[mij])
	 m1=mij+1;
	 else
	m2=mij;
	
    }
    if(x==a[m1])
     return m1;
            else
            return m1;     
 }

                
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(1,n));
           if(p==1)
                   printf("%d\n",cautbin2(1,n));
           if(p==2)
                   printf("%d\n",cautbin3(1,n));
                   
   }    

    return 0;
}