Cod sursa(job #656830)

Utilizator iuyuIoana Orsa iuyu Data 5 ianuarie 2012 13:14:52
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include<fstream> 

int v[100000]; 
int intr0 (int p, int u, int b)
 { int m;     
   while (p <= u)
    {m = (p + u) / 2;       
     if (v[m] <= b)            
      p = m + 1;       
     else  u = m - 1;   
    }    
   m = (p + u) / 2;     
   if (v[m] > b) m --; 
   if (v[m] == b) return m; 
   return -1;} 
 
int intr1 (int p, int u, int b)
 { int m, n = u; 
   while (p < u)
   {m = (p + u) / 2;         
    if (v[m] <= b)            
     p = m + 1;  
    else u = m; }     
   m = (p + u) / 2; 
   if (v[m] > b) -- m;
   return m; }
 
 int intr2 (int p, int u, int b)
  { int m;    
    while (p < u) 
    {m = (p + u) / 2;       
     if (v[m] < b) 
      p = m + 1;         
     else u = m; }     
    m = (p + u) / 2; 
    if (v[m] < b) 
    ++ m; 
    return m; } 
 
 int main () 
 {int i, n, m,a,b; 
  ifstream f ("cautbin.in");
  ofstream g ("cautbin.out");    
  f>>n;   
  for (i = 1; i <= n; ++ i) 
   f>>v[i];  
  f>>m;     
  while (m --)
   {f>>a>>b;  
    if (a == 0)             
    g<< intr0(1, n, b); 
    if (a == 1) 
    g<<intr1(1, n, b); 
    if (a == 2) 
    g<<intr2(1, n, b);} 
    return 0; }