Cod sursa(job #3001755)

Utilizator 55andreiv55Andrei Voicu 55andreiv55 Data 13 martie 2023 21:29:12
Problema Cautare binara Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.67 kb
#include <fstream>

using namespace std;
const int N = 1e5 + 1;

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

int main()
{
    int n, v[N], q;
    in >> n;
    for (int i = 0; i < n; i++)
    {
        in >> v[i];
    }
    in >> q;
    for (int I = 0; I < q; I++)
    {
        int type, x;
        in >> type >> x;
        if (type == 0)
        {
            int st = 0, dr = n - 1, rez = -1;
            while (st <= dr)
            {
                int m = (st + dr) / 2;
                if (v[m] == x)
                {
                    rez = m;
                    st = m + 1;
                }
                else
                    dr = m - 1;
            }
            if (rez == -1)
                out << rez;
            else
                out << rez + 1;
            out << "\n";
        }
        else if (type == 1)
        {
            int st = 0, dr = n - 1, rez;
            while (st <= dr)
            {
                int m = (st + dr) / 2;
                if (v[m] <= x )
                {
                    rez = m;
                    st = m + 1;
                }
                else
                    dr = m - 1;
            }
            out << rez + 1 << "\n";
        }
        else
        {
            int st = 0, dr = n - 1, rez;
            while (st <= dr)
            {
                int m = (st + dr) / 2;
                if (v[m] >= x )
                {
                    rez = m;
                    dr = m - 1;
                }
                else
                    st = m + 1;
            }
            out << rez + 1 << "\n";
        }
    }
    return 0;
}