Cod sursa(job #1691686)

Utilizator david12345Rotari David david12345 Data 19 aprilie 2016 10:21:33
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.91 kb
#include<fstream>
using namespace std;
ifstream fi("cautbin.in");
ofstream fo("cautbin.out");
int a[100010];
int cautare0(int i,int j,int x){
    int m;
   while(i<=j){
               m=(i+j)/2;
               if(a[m]<=x)
               i=m+1;
               else 
               j=m-1;
               }
             m=(i+j)/2;
             if(a[m]>x) m--;
             if(a[m]==x) return m;
             else return -1;  
    
    
    
    }
    int cautare1(int i,int j,int x){
        int m;
        while(i<j){
                    m=(i+j)/2;
                    if(a[m]<=x)
                    i=m+1;
                    else 
                    j=m;
                    
                    
                    }
        m=(i+j)/2;
        if(a[m]>x) --m;
        return m;
        
        
        }
        int cautare2(int i,int j,int x){
            int m;
            while(i<j){
                        m=(i+j)/2;
                        if(a[m]<x)
                        i=m+1;
                        else 
                        j=m;
                        }
                        m=(i+j)/2;
                        if(a[m]<x) m++;
                        return m;
                        
                        
                        
                        }
            int main(){
              int n,m,t,x;
              fi>>n;
              for(int i=1;i<=n;i++)
                 fi>>a[i];
                 fi>>m;
                for(int i=1;i<=m;i++){
                        
                        fi>>t>>x;
                        if(t==0) fo<<cautare0(1,n,x)<<endl;
                        if(t==1) fo<<cautare1(1,n,x)<<endl;
                        if(t==2) fo<<cautare2(1,n,x)<<endl;
                        
                        
                        }
                return 0;
                
                
                }