Cod sursa(job #203636)

Utilizator ilincaSorescu Ilinca ilinca Data 18 august 2008 04:57:49
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>

#define MAXn 100001

        int s, n, m, a [MAXn];


int binary_search (int v)
                 {
                      int i, cs=s;
                      for (i=0; cs; cs >>= 1)
			   if (i+cs <=n && a [i+cs] <= v) 
			       i+=cs;	    
		      return i;
		 }	 

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