Cod sursa(job #2943710)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 21 noiembrie 2022 15:48:09
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.66 kb
#include <fstream>

using namespace std;

#define Nmax 100000

int v[Nmax];

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

    int n, m, i, cer, x, l, r, mid, sol;

    fin >> n;

    for(i = 0; i < n; i++)
    {
        fin >> v[i];
    }

    fin >> m;

    for(i = 0; i < m; i++)
    {
        fin >> cer >> x;

        l = 0;
        r = n - 1;

        if(cer == 0)
        {
            sol = -2;
            while(l <= r)
            {
                mid = (l + r) / 2;
                if(x >= v[mid])
                {
                    if(x == v[mid])
                    {
                        sol = mid;
                    }
                    l = mid + 1;
                }
                else
                {
                    r = mid - 1;
                }
            }
        }
        else if(cer == 1)
        {
            while(l <= r)
            {
                mid = (l + r) / 2;
                if(x >= v[mid])
                {
                    sol = mid;
                    l = mid + 1;
                }
                else
                {
                    r = mid - 1;
                }
            }
        }
        else if(cer == 2)
        {
            while(l <= r)
            {
                mid = (l + r) / 2;
                if(x <= v[mid])
                {
                    sol = mid;
                    r = mid - 1;
                }
                else
                {
                    l = mid + 1;
                }
            }
        }

        fout << sol + 1 << '\n';
    }
    return 0;
}