Cod sursa(job #2412196)

Utilizator AlexNeaguAlexandru AlexNeagu Data 21 aprilie 2019 19:38:36
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
#define NMAX 100005
int N,X,M,Q,POZ;
int V[NMAX];
int Cautare_Binara_0(int st, int dr)
{
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if (V[mij]>X)
            dr=mij-1;
            else if (V[mij]<X)
                st=mij+1;
            else
            {
                POZ=mij;
                st=mij+1;
            }
    }
    return POZ;
}
int Cautare_Binara_1(int st, int dr)
{
    while (st<=dr)
    {
        int mij=(st+dr)/2;
        if (V[mij]<=X)
            st=mij+1;
        else dr=mij-1;
    }
    return dr;
}
int Cautare_Binara_2(int st, int dr)
{
    while (st<=dr)
    {
        int mij=(st+dr)/2;
        if (V[mij]>=X)
            dr=mij-1;
        else st=mij+1;
    }
    return dr;
}
int main()
{
    fin>>N;
    for (int i=1; i<=N; i++)
        fin>>V[i];
        fin>>M;
        for (int i=1; i<=M; i++)
        {
            fin>>Q>>X;
            if (!Q)
                fout<<Cautare_Binara_0(1,N)<<"\n";
                if (Q==1)
                    fout<<Cautare_Binara_1(1,N)<<"\n";
                if (Q==2)
                    fout<<Cautare_Binara_2(1,N)<<"\n";

        }
    return 0;
}