Cod sursa(job #2641647)

Utilizator teofilotopeniTeofil teofilotopeni Data 12 august 2020 11:23:34
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.47 kb
#include <fstream>
#include <iostream>
using namespace std;

int v[100001];

int main()
{
    ifstream in ("cautbin.in");
    ofstream out ("cautbin.out");
    int n, m, i, x, y, min, max;
    in >> n;
    for (i = 1; i <= n; i++)
    {
        in >> v[i];
    }
    for (in >> m; m > 0; m--)
    {
        in >> x >> y;
        min = 0;
        max = n + 1;
        i = (min + max) / 2;
        if (x == 0)
        {
            while (max - min > 1 && v[min] != y)
            {
                if (v[i] <= y)
                    min = i;
                else
                    max = i;
                i = (max + min) / 2;
            }
            if (v[min] != y)
                out << -1;
            else
            {
                i = min + 1;
                while (i <= n && v[i] == y)
                    i++;
                out << i - 1;
            }
        }
        else if (x == 1)
        {
            while (max - min > 1 && v[min] <= y)
            {
                if (v[i] > y) max = i;
                else min = i;
                i = (max + min) / 2;
            }
            out << min;
        }
        else
        {
            max--;
            while (max - min > 1 && v[min] <= y)
            {
                if (v[i] >= y) max = i;
                else min = i;
                i = (max + min) / 2;
            }
            out << max;
        }
        out << "\n";
    }
    return 0;
}