Cod sursa(job #2620938)

Utilizator alezgandruOana Alexandru Andrei alezgandru Data 29 mai 2020 22:21:42
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.35 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");


int v[10002];
int main()
{

    int n;
    in >> n;

    for (int i = 1; i <= n; i++)
    {
        in >> v[i];
    }
    int m;
    in >> m;
    for (int j = 1; j <= m; j++)
    {
        int q, x, st = 1, dr = n, mid;
        in >> q >> x;

        while (st <= dr)
        {
            mid = (st + dr) / 2;
            if (v[mid] < x)
                st = mid + 1;
            else dr = mid - 1;
        }

        if (q == 0)
        {
            if (v[st] != x) out << -1 << '\n';
            else
            {
                int index = st;
                while (v[index + 1] == v[st])
                {
                    index += 1;
                }
                out << index << '\n';
            }
        }
        else if (q == 1)
        {
            if(st > n) out << n <<'\n';
            else if( v[st] == x)
            {
                int ind = st + 1;
                while (v[ind] <= v[st] && ind <= n)
                {
                    ind++;
                }
                out << ind - 1 << '\n';
            }
            else out << st - 1;
        }
        else if (q == 2)
        {
            out << st << '\n';
        }
    }

    return 0;
}