Cod sursa(job #281415)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 14 martie 2009 20:17:42
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
int a[1000],n,m;
int bin1(int nr)
{ int lo=1,hi=n,mid;
	while(lo<=hi)
     { mid=lo+(hi-lo)/2;
	if(a[mid]==nr)
		return mid;
	else if(a[mid]<nr) lo=mid+1;
	else hi=mid-1;
     }
 return 0;
}
int bin2(int nr)
{ int lo=1,hi=n,mid;
	while(lo<=hi)
	{ mid=lo+(hi-lo)/2;
	 if(a[mid]>=nr) {nr=mid;hi=mid-1;}
	 else lo=mid+1;
	}
   return nr;
}
int bin3(int nr)
{ int lo=1,hi=n,mid;
	while(lo<=hi)
	{ mid=lo+(hi-lo)/2;
	if(a[mid]<=nr){ nr=mid;hi=mid-1;}
	else lo=mid+1;
	}
   return nr;
   }
int main()
{  int b,x;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
	scanf("%d",&a[i]);
 scanf("%d",&m);
 for(i=1;i<=m;i++)
	{scanf("%d %d", &b,&x);
	 if(b==0) printf("%d",bin1(x));
	 if(b==1) printf("%d",bin2(x));
	 else printf("%d",bin3(x));}
return 0;
}