Cod sursa(job #324537)

Utilizator bdrzrBarbu Daniel bdrzr Data 16 iunie 2009 14:59:49
Problema Cautare binara Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
#include <stdlib.h>

int n, *a;

int caut (int i, int j, int x, int y)   {
    if (i == j)  {
          if (a [i] ==  y) return i;
          else 
               if (x == 0) return -1;
          else
               if (x == 1) return i-1;
          else return i;
          }
     int m = (i+j)/2;
     if (a [m] >= y) return caut (i, m, x, y);
        else return caut (m+1, j, x, y); 
}

int main () {
   
   FILE *fin = fopen ("cautbin.in", "r");
   FILE *fout = fopen ("cautbin.out", "w");
   fscanf (fin, "%d", &n);
   
   int i, m, x, y;
   a = malloc ((n+2) * sizeof (int));
   for (i=1; i<=n; ++i) 
       fscanf (fin, "%d", &a [i]);
   
   fscanf (fin, "%d", &m);
   
   for (i=0; i<m; ++i) {
       fscanf (fin, "%d %d", &x, &y);
       fprintf (fout, "%d\n", caut (0, n, x, y));
       //printf ("%d\n", caut (1, n, x, y));
}
 
 fclose (fin);
 fclose (fout);
 
 return 0;   
}