Cod sursa(job #1248428)

Utilizator alex.glontGlontaru Alexandru alex.glont Data 25 octombrie 2014 09:58:18
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<fstream>

using namespace std;

fstream in ("cautbin.in" , ios::in ),
        out("cautbin.out", ios::out);


int n, m, v[100005];

int caut0(int x){

    int i = 0, pas = 1<<16;

    while(pas!=0){

        if( i+pas<=n && v[i+pas]<=x )
            i+=pas;
        pas/=2;
    }
    if( v[i] != x ) return -1;

    return i;
}

int caut1(int x){

    int i = 0, pas = 1<<16;

    while(pas!=0){

        if( i+pas<=n && v[i+pas]<=x )
            i+=pas;
        pas/=2;
    }
    return i;
}

int caut2(int x){

    int i = 0, pas = 1<<16;

    while(pas!=0){

        if( i+pas<=n && v[i+pas]<x )
            i+=pas;
        pas/=2;
    }
    return i;
}




int main(){

    in >> n;

    for(int i=1; i<=n; i++){

        in >> v[i];
    }

    in >> m;
    int x, y;
    for(int i=0; i<m; i++){

        in >> x >> y;

        switch( x ){

            case 0: out << caut0( y )  <<'\n';  break;
            case 1: out << caut1( y )  <<'\n';  break;
            case 2: out << caut2( y )+1<<'\n';  break;
        }
    }

    return 0;
}