Cod sursa(job #2096622)

Utilizator naomitrancaNaomi Tranca naomitranca Data 29 decembrie 2017 15:25:47
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>

#include <fstream>

using namespace std;

int V[100005];

int nr0(int f, int l, int val)

{

    int M;

    while(f<=l)

    {

        M=(f+l)/2;

        if (V[M]<=val)

            f=M+1;

        else

            l=M-1;

    }

    M=(f+l)/2;

    if(V[M]>val)

        M--;

    if(V[M]==val)

        return M;

    return -1;

}

int nr1(int f,int l, int val)

{

    int M,N=l;

    while(f<l)

    {

        M=(f+l)/2;

        if(V[M]<= val)

            f=M+1;

        else

            l=M;



    }

    M=(f+l)/2;

    if(V[M]>val)

        M--;

    return M;

}

int nr2(int f, int l, int val)

{

    int M;

     while(f<l)

    {

        M=(f+l)/2;

        if(V[M]<= val)

            f=M+1;

        else

            l=M;



    }

    M=(f+l)/2;

    if(V[M]<val)

        M++;

    return M;

}

int main()

{

    ifstream in("cautbin.in");

    ofstream out("cautbin.out");

    int N,M,i,tip,nr;

    in>>N;

    for(i=1;i<=N;i++)

        in>>V[N];

    in>>M;

    while(M>0)

    {

        in>>tip>>nr;

        if(tip==0)

            out<<nr0(1, N, nr)<<"/n";

        if(tip==1)

            out<<nr1(1, N, nr)<<"/n";

        if(tip==2)

            out<<nr2(1, N, nr)<<"/n";

    }

    return 0;



}