Cod sursa(job #578623)

Utilizator @LynTirla Alin @Lyn Data 11 aprilie 2011 13:53:36
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream> 
using namespace std;
ifstream f1("cautbin.in"); 
ofstream f2("cautbin.out"); 
int n, m, a[100005], i, t, X, val; 
int bs1 (int find, int c){ 
 
int i, nr = val; 
   
for (i = 1; nr > 0; nr >>= 1){ 
       
if (i + nr <= n) 
          
if (a[i + nr] <= find){ 
               
i += nr; 
           
} 
  
} 
   
if (c == 0){ 
        
if (a[i] == find) 
           
return i; 
       
return -1; 
   
} 
   
return i; 
} 
int bs2 (int find){ 
  
int i, nr = val; 
  
for (i = n; nr > 0; nr >>= 1){ 
       
if (i - nr >= 0) 
           
if (a[i - nr] >= find){ 
               
i -= nr; 
           
} 
   
} 
   
return i; 
} 
int main (){ 
f1>> n; 
for (val = 1; val <= n; val <<= 1); 
for (i = 1; i <= n; ++i) 
f1>> a[i]; 
for (f1 >> m; m > 0; --m){ 
f1>> t >> X; 
if (t < 2) 
f2<< bs1 (X, t); 
else
f2<< bs2 (X); 
f2 << '\n'; 
} 
return 0; 
}