Cod sursa(job #2612078)

Utilizator dianapingu1Diana Vasiliu dianapingu1 Data 8 mai 2020 14:29:50
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.61 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int N;
vector<int> v;

int binarySearch0(int k)
{
    int st=0,dr=N-1,mij,pos=-1;
    while(st<=dr) {
        mij = st + (dr-st)/2;
        if (v[mij] == k) {
            pos = mij;
            st = mij+1;
        }
        else if (v[mij] > k) {
            dr = mij - 1;
        }
        else
            st = mij + 1;
    }

    return pos;
}

int binarySearch1(int k)
{
    int pos=-1,mij,st=0,dr=N-1;
    while(st<=dr) {
        mij = st + (dr-st)/2;
        if (v[mij] <= k) {
            pos = mij;
            st = mij+1;
        }
        else
            dr = mij - 1;
    }

    return pos;
}

int binarySearch2(int k)
{
    int pos=-1,mij,st=0,dr=N-1;
    while(st<=dr) {
        mij = st + (dr-st)/2;
        if (v[mij] >= k) {
            pos = mij;
            dr = mij-1;
        }
        else
            st = mij + 1;
    }

    return pos;

}


int main()
{
    int M,x,op,rez;

    fin>>N;
    for (int i=0; i<N; i++) {
        fin>>x;
        v.push_back(x);
    }
    fin>>M;
    for (int i=0; i<M; i++) {
        fin>>op>>x;
        switch(op) {
        case 0:
            rez = binarySearch0(x);
            fout<<rez+1<<'\n';
            break;
        case 1:
            rez = binarySearch1(x);
            fout<<rez+1<<'\n';
            break;
        case 2:
            rez = binarySearch2(x);
            fout<<rez+1<<'\n';
            break;

        }
    }




    return 0;
}