Cod sursa(job #2569197)

Utilizator VasAlexVasiluta Alex VasAlex Data 4 martie 2020 11:28:09
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;
string problema = "cautbin";
ifstream f(problema + ".in");
ofstream g(problema + ".out");
#ifdef INFOARENA
#define cin f
#define cout g
#endif
int n, m, i, a, b, nCon;
vector<int> v;

int main()
{
    cin >> n;
    for (i = 1; i <= n; i++)
    {
        cin >> a;
        v.push_back(a);
    }
    cin >> m;
    for (i = 1; i <= m; i++)
    {
        cin >> a >> b;
        auto ub = upper_bound(v.begin(), v.end(), b);
        auto lb = lower_bound(v.begin(), v.end(), b);
        switch (a)
        {
        case 0:
            if (*(ub - 1) != b)
                cout << -1;
            else
                cout << distance(v.begin(), ub);
            break;
        case 1:
            cout << distance(v.begin(), ub);
            break;
        case 2:
            if (*lb != b)
                cout << -1;
            else
                cout << distance(v.begin(), lb) + 1;
            break;
        }
        cout << "\n";
    }
    return 0;
}