Cod sursa(job #2640025)

Utilizator Snake2003lalallalal Snake2003 Data 4 august 2020 18:51:43
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>


#define Nmax 100005

using namespace std;

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

int n;

 vector < int > Numere;

void Read()
{
    fin >> n;
    for(int i = 1; i <= n; i ++)
    {

        int x;
        fin >> x;
        Numere.push_back(x);

    }

}

int main()
{
    Read();

    int k;
    fin >> k;

    while( k -- )
    {
        int _case, x;
        fin >> _case >> x;
        if( _case == 0 )
        {
            int upper = upper_bound(Numere.begin(), Numere.end(), x) - Numere.begin();
            if(upper >= 0 && upper < n)
                fout << upper << "\n";
            else
                fout << -1 << "\n";
        }
        if(_case == 1)
        {
            int lower = lower_bound(Numere.begin(), Numere.end(), x + 1) - Numere.begin(); // x + ! pt ori il ia pe x, ori pe urmatorul mai mic
            fout << lower << "\n";
        }
        if(_case == 2)
        {
            int upper = upper_bound(Numere.begin(), Numere.end(), x - 1) - Numere.begin() + 1;
            fout << upper;
        }
    }

    return 0;
}