Cod sursa(job #2767897)

Utilizator Ioana_Maria_DicuDicu Ioana Maria Ioana_Maria_Dicu Data 8 august 2021 14:22:31
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.45 kb
#include <fstream>

using namespace std;

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

int v[100001];

int main()
{
    int N;
    in >> N;

    for(int i = 1; i <= N; i++)
    {
        in >> v[i];
    }

    int M;
    in >> M;

    for(int i = 1; i <= M; i++)
    {
        int q, x;
        in >> q >> x;

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

        if(q == 0)
        {
            if(v[poz] != x)
                out << -1 << endl;
            else
            {
                while(v[poz] == v[poz+1])
                    poz++;
                out << poz << endl;
            }
        }

        if(q == 1)
        {
            if(v[poz] == x)
            {
                while(v[poz] == v[poz+1])
                    poz++;
                out << poz << endl;
            }
            else
                out << poz + 1 << endl;
        }

        if(q == 2)
        {
            if(v[poz] == x)
            {
                while(v[poz] == v[poz-1])
                    poz--;
                out << poz << endl;
            }
            else
                out << poz << endl;

        }
    }

}