Cod sursa(job #2639903)

Utilizator Snake2003lalallalal Snake2003 Data 4 august 2020 14:05:08
Problema Cautare binara Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

int n;
vector < int > Numere;

int main()
{

    fin >> n;
    for(int i = 1; i <= n; i ++)
    {
        int x;
        fin >> x;
        Numere.push_back(x);
    }
    int nr;
    fin >> nr;
    while( nr -- )
    {
        int x, _case;
        fin >> _case >> x;
        if( _case == 0 )
        {
            int rezultat = upper_bound(Numere.begin(), Numere.end(), x) - Numere.begin();
            int rez = Numere[rezultat];
            int rez1 = Numere[rezultat - 1];
            if(rezultat >= 0 && rezultat < n && Numere[rezultat - 1] == x)
                fout << rezultat << "\n";
            else
                fout << -1 << "\n";
        }
        if(_case == 1)
        {
            int rezultat = lower_bound(Numere.begin(), Numere.end(), x + 1) - Numere.begin() - 1;
            fout << rezultat + 1 << "\n";
        }
        if(_case == 2)
        {
            int rezultat = upper_bound(Numere.begin(), Numere.end(), x - 1) - Numere.begin();
            fout << rezultat + 1 << "\n";
        }
    }

    return 0;
}