Cod sursa(job #2805860)

Utilizator namesurname01Name Surname namesurname01 Data 22 noiembrie 2021 02:45:45
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <fstream>
#define N 100002

using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int v[N], val, n;
void c1(int x)
{
    int st = 1, dr = n, mij;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (v[mij] <= x)
        {
            val = mij;
            st = mij + 1;
        }
        else
            dr = mij - 1;
    }
}
void c2(int x)
{
    int st = 1, dr = n, mij;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (v[mij] < x)
            st = mij + 1;
        else
        {
            val = mij;
            dr = mij - 1;
        }
    }
}
int main()
{
    f >> n;
    for (int i = 1;i <= n;++i) f >> v[i];
    int m, caz, x;
    f >> m;
    while (m--)
    {
        f >> caz >> x;
        val = -1;
        if (caz == 0)
        {
            c1(x);
            if (v[val] == x) g << val << '\n';
            else g << -1 << '\n';

        }
        else
            if (caz == 1)
            {
                c1(x);
                if (v[val] <= x) g << val << '\n';
                else g << -1 << '\n';
            }
            else
            {
                c2(x);
                if (v[val] >= x) g << val << '\n';
                else g << -1 << '\n';
            }
    }
    f.close();
    g.close();
    return 0;
}