Cod sursa(job #3154201)

Utilizator veibi1234veibi aron veibi1234 Data 3 octombrie 2023 18:53:39
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.31 kb
#include <iostream>
#include <fstream>

using namespace std;

int binkeres0(int elem, int l, int tomb[])
{
        int bal = 0, jobb = l-1;
        while (bal <= jobb) {
            int kozep = (bal+jobb)/2;

             if (tomb[kozep] == elem){
                  do{
                        kozep++;
                    }while (elem==tomb[kozep]);
                    return kozep;}
            else if (tomb[kozep] < elem) {
                bal = kozep + 1;
            }
            else { // tomb[kozep] > elem
                jobb = kozep - 1;
            }
        }

        return -1;
    }

int binkeres1(int elem, int l, int tomb[])
{
        int bal = 0, jobb = l-1, kozep;
        while (bal <= jobb) {
            kozep = (bal+jobb)/2;

            if (tomb[kozep] == elem){
                do{
                        kozep--;
                    }while (elem=!tomb[kozep]);
                if (kozep <0)return kozep+1;
                else  return kozep;}
            else if (tomb[kozep] < elem) {
                bal = kozep + 1;
            }
            else { // tomb[kozep] > elem
                jobb = kozep - 1;
            }
        }

        return kozep;
}
int binkeres2(int elem, int l, int tomb[])
{
        int bal = 0, jobb = l-1, kozep;
        while (bal <= jobb) {
            kozep = (bal+jobb)/2;

            if (tomb[kozep] == elem){
                  do{
                        kozep++;
                    }while (elem=!tomb[kozep]);
                if (kozep <l)
                        return kozep-1;
                else  return kozep;   }
            else if (tomb[kozep] < elem) {
                bal = kozep + 1;
            }
            else { // tomb[kozep] > elem
                jobb = kozep - 1;
            }
        }

        return kozep;
}
int main () {
    int i, n, m, tip, elem;
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    int v[n];
    for (i = 0; i <= n; i++)
        f>>v[i];
    f>>m;
    while (m --){
        f>>tip>>elem;
        if (tip == 0)
            g<<(binkeres0(elem,n,v))<<'/n';
        if (tip == 1)
            g<<(binkeres1(elem,n,v))<<'/n';
        if (tip == 2)
            g<<(binkeres2(elem,n,v))<<'/n';
    }
    f.close();
    g.close();
    return 0;
}