Cod sursa(job #1691690)

Utilizator david12345Rotari David david12345 Data 19 aprilie 2016 10:38:28
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],n,m,t,x;
int cautare0(int x){
    int m;
    int i=1,j=n;
   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 x){
        int m;
        int i=1,j=n;
        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 x){
            int m;
            int i=1,j=n;
            while(i<j){
                        m=(i+j)/2;
                        if(a[m]<x)
                        i=m+1;
                        else
                        j=m;
                        }
                          m=(i+j)/2;
                          while(a[m]<x) m++;
                                     return m;
                         
                         
                        }
            int main(){
              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(x)<<endl;
                        if(t==1) fo<<cautare1(x)<<endl;
                        if(t==2) fo<<cautare2(x)<<endl;
                         
                         
                        }
                return 0;
                 
                 
                }