Cod sursa(job #656353)

Utilizator Anna_cristinaButucea Ana Cristina Anna_cristina Data 4 ianuarie 2012 15:10:24
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include<fstream>

using namespace std;

unsigned int v[100000],n;

int c0(unsigned int x,int i,int j)
{int mijl;
 while(i<=j)
  {mijl=(i+j)/2;
   if(x==v[mijl])  break;
     /*if(v[mijl+1]>x)  {mijl++;return mijl;}*/
   if(x<v[mijl])  j=mijl-1;
     else         i=mijl+1;  
    }   
 if(x==v[mijl])
   {while(x==v[mijl])  mijl++;
    return mijl;  
    }
 return -1;     
}
 
int c1(unsigned int x,int i,int j)
{int mijl;
 while(i<j)
   {mijl=(i+j)/2;
    if(x<v[mijl])  j=mijl-1;
      else         i=mijl+1;
    } 
 mijl=(i+j)/2;  
 if(v[mijl]>x)  mijl--;
 mijl++;return mijl;     
} 

int c2(unsigned int x,int i,int j)
{int mijl;
 while(i<j)
   {mijl=(i+j)/2;
    if(x<=v[mijl])  j=mijl-1; 
        else        i=mijl+1;
     }    
 mijl=(i+j)/2;
 if(x>v[mijl])   mijl++;
 mijl++;return mijl;  
}  
                 
int main()
{int m,i,tip;
 unsigned int x;
 ifstream f("cautbin.in");
 ofstream g("cautbin.out");
 f>>n;
 for(i=0;i<n;i++)
   f>>v[i];
 f>>m;  
 for(i=1;i<=m;i++)
   {f>>tip;
    f>>x;
    if(tip==0)  g<<c0(x,0,n-1)<<"\n";
    else 
      if(tip==1)  g<<c1(x,0,n-1)<<"\n";
        else      g<<c2(x,0,n-1)<<"\n";
    }   
 f.close();
 g.close();
 return 0; 
}