Cod sursa(job #364357)

Utilizator Bogdan_CCebere Bogdan Bogdan_C Data 15 noiembrie 2009 15:23:46
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;
int a[100001],n,m;
int x,val,i,s;
int main()
{freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
int lg;
for(lg=1;lg<=n;lg<<=1);
for(i=1;i<=n;i++) 
 scanf("%d",&a[i]);
scanf("%d",&m);
for(;m;m--)
 {
           scanf("%d %d",&x,&val);
           if(x<2){for(i=0,s=lg;s;s>>=1)
            if(i+s<=n && a[i+s]<=val)
             i+=s;
           if(x==0 && a[i]!=val )
            printf("-1 \n");
           else    
            printf ("%d \n",i);
}
           else 
           {for(i=n, s=lg;s;s>>=1 )
             if(i-s>0 && a[i-s]>=val)
              i=i-s;
              printf("%d \n" ,i);
                }
           
           }
 
 
  
    
    
    return 0;}