Cod sursa(job #2569277)

Utilizator VasAlexVasiluta Alex VasAlex Data 4 martie 2020 11:42:59
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 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;
        if(a == 0)
        {
            int ubd = distance(v.begin(), upper_bound(v.begin(), v.end(), b)) - 1;
            cerr << ubd << "\n";
            if(ubd >= 0 && ubd < n && v[ubd] == b)
                cout << ubd + 1 << "\n";
            else
                cout << "-1\n";
        }
        if(a == 1)
        {
            int lbd = distance(v.begin(), lower_bound(v.begin(), v.end(), b + 1));
            cout << lbd << "\n";
        }
        if(a == 2)
        {
            int ubd = distance(v.begin(), upper_bound(v.begin(), v.end(), b - 1)) + 1;
            cout << ubd << "\n";
        }
    }
    return 0;
}