Cod sursa(job #2758812)

Utilizator lahayonTester lahayon Data 13 iunie 2021 02:11:50
Problema Cautare binara Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
#include <vector>
#include <stack>
#include <algorithm>


using namespace std;

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

    int N;
    cin >> N;
    vector<int> A;
    vector<int>::iterator it;

    for(int i = 0, x; i < N; ++i){
        cin >> x;
        A.push_back(x);
    }
 
    int Q;
    cin >> Q;
    for(int op, x, poz; Q > 0; --Q){
        
        cin >> op >> x;
        switch (op)
        {
        case 0:
            it = upper_bound(A.begin(), A.end(), x); 
            if(it != A.end() && *(--it) == x)
                cout << upper_bound(A.begin(), A.end(), x) - A.begin() << "\n";
            else 
                cout << -1 << "\n";
            break;
        case 1:
            cout << lower_bound(A.begin(), A.end(), x + 1) - A.begin() << "\n";
            break;
        case 2:
            cout << upper_bound(A.begin(), A.end(), x - 1) - A.begin() + 1 << "\n";
            break;
        default:
            break;
        }
    }
  
    cin.close();
    cout.close();

    return 0;
}