Cod sursa(job #1792081)

Utilizator dcutitoiuCutitoiu Adrian-Nicolae dcutitoiu Data 29 octombrie 2016 23:43:45
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <string>
#include <iterator>
#include <numeric>
#include <string>
#include <set>
#include <map>
#include <queue>

using namespace std;

ifstream in("divprim.in");
ofstream out("divprim.out");

int main()
{
    int N, M;
    in >> N;

    vector<int> numbers(N);
    copy_n(istream_iterator<int>(in), N, numbers.begin());

    in >> M;
    while(M--)
    {
        int operation, value;
        in >> operation >> value;

        if(operation == 0)
        {
            auto lb = lower_bound(numbers.begin(), numbers.end(), value);
            auto ub = upper_bound(numbers.begin(), numbers.end(), value);

            if(lb == numbers.end() || *lb != value)
                out << -1;
            else
                out << ub - numbers.begin();
        }
        else if(operation == 2)
        {
            auto lb = lower_bound(numbers.begin(), numbers.end(), value);
            out << lb - numbers.begin() + 1;
        }
        else
        {
            auto ub = upper_bound(numbers.begin(), numbers.end(), value);
            out << ub - numbers.begin();
        }
        out << '\n';
    }

    return 0;
}