Cod sursa(job #2751276)

Utilizator matei2502Matei Pisaru matei2502 Data 14 mai 2021 17:58:58
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <bits/stdc++.h>

using namespace std;

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

vector <int> a;
int n;

void intrebare(int in, int x)
{
    int st = 0, dr = n - 1, mid;
    if (in == 0)
    {
        while (st <= dr)
        {
            mid = (st + dr) / 2;
            if (a[mid] <= x)
                st = mid + 1;
            else
                dr = mid - 1;
        }
        if(a[dr] == x)
            out << dr + 1 << '\n';
        else
            out << "-1" << '\n';
    }
    else if (in == 1)
    {
        while (st <= dr)
        {
            mid = (st + dr) / 2;
            if (a[mid] <= x)
                st = mid + 1;
            else
                dr = mid - 1;
        }
        out << dr + 1 << '\n';
    }
    else if (in == 2)
    {
        while (st <= dr)
        {
            mid = (st + dr) / 2;
            if (a[mid] < x)
                st = mid + 1;
            else
                dr = mid - 1;
        }
        out << st + 1 << '\n';
    }
}

int main()
{
    int m, b, in, x;
    fin >> n;
    for (int i = 0; i < n; i++)
    {
        fin >> b;
        a.push_back(b);
    }
    fin >> m;
    for (int i = 0; i < m; i++)
    {
        fin >> in >> x;
        intrebare(in, x);
    }
    return 0;
}