Cod sursa(job #2261722)

Utilizator vladuta61Uta Vlad vladuta61 Data 16 octombrie 2018 16:35:22
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int salam_st (int val, vector<int>&v)
{
    int st = 0;
    int dr = v.size() - 1;

    while (st <= dr)
    {
        int mij = (st + dr) / 2;

        if (v[mij] >= val)
            dr = mij - 1;
        else
            st = mij + 1;
    }

    return dr + 1;
}

int salam_dr (int val, vector<int>&v)
{
    int st = 0;
    int dr = v.size() - 1;

    while (st <= dr)
    {
        int mij = (st + dr) / 2;

        if (v[mij] <= val)
            st = mij + 1;
        else
            dr = mij - 1;
    }

    return st - 1;
}

int main()
{
    int n, T;
    cin >> n >> T;

    vector<int> v;

    for (int i = 1; i <= n; i++)
    {
        int x;
        cin >> x;
        v.push_back(x);
    }

    sort(v.begin(), v.end());

    while(T--)
    {
        int x, y;
        cin >> x >> y;

        int poz_st = salam_st(x, v);
        int poz_dr = salam_dr(y, v);

        cout << poz_dr - poz_st + 1 << '\n';
    }

    return 0;
}