Cod sursa(job #304577)

Utilizator EstiarteManuel Esanu Estiarte Data 14 aprilie 2009 10:27:12
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<stdio.h>
long int n,m,v[100003],x;
FILE *in=fopen("cautbin.in","rt");
FILE *out=fopen("cautbin.out","wt");
long int zero()
{
  long int i,j,k;
  i=1;j=n;
  do
  {
    k=(i+j)/2;
    if(v[k]==x) return k;
    if(i>j) return -1;
    else
    {
      if(x>v[k]) i=k+1;
      else j=k-1;
    }
  }
  while(v[k]!=x && i<=j);
}
int main()
{
	long int i;
	int opt;
	fscanf(in,"%ld",&n);
	for(i=1;i<=n;i++) fscanf(in,"%ld",&v[i]);
	fscanf(in,"%ld",&m);
	for(i=1;i<=m;i++)
	{
		 fscanf(in,"%d",&opt);
		 fscanf(in,"%ld",&x);
		 if(opt==0) fprintf(out,"%ld\n",zero());

	}
	return 0;
}