Cod sursa(job #2796746)

Utilizator Casian_doispeChiriac Casian Casian_doispe Data 8 noiembrie 2021 19:17:23
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>

using namespace std;

ifstream cin("cautbin.in");
ofstream cout("cautbin.out");

vector<int> v ;

int main()
{
    int n ;

    cin >> n ;

    for(int f = 1, a ; f <= n ; f ++)
        cin >> a, v.push_back(a) ;

    int q ;

    cin >> q ;

    while(q --)
    {

        int cerinta, x ;

        cin >> cerinta >> x ;

        if(cerinta == 0)
        {
            int poz = (int)(upper_bound(v.begin(), v.end(), x) - v.begin()) ;

            poz -- ;

            if(v[poz] == x)cout << poz + 1 << '\n' ;
                else cout << -1 << "\n" ;
        }
        else if(cerinta == 1)
        {
            int poz = (int)(upper_bound(v.begin(), v.end(), x) - v.begin()) ;

            cout << poz << "\n" ;
        }
        else
        {
            int poz = (int)(lower_bound(v.begin(), v.end(), x) - v.begin()) ;

            cout << poz + 1 << "\n" ;
        }

    }

    return 0;
}