Cod sursa(job #2653748)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 28 septembrie 2020 22:13:47
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <unordered_set>

using namespace std;

const int NMAX = 1<<20;
int v[1 + NMAX];

unordered_set<int> hm;

int main()
{
    ifstream in("secv5.in");
    ofstream out("secv5.out");
    int n, nr_sol = 0, l, u;
    int x;

    in >> n >> l >> u;
    for (int i = 1; i <= n; i++)
    {
        in >> x;
        if (hm.find(x) == hm.end())
        {
            hm.emplace(x);
            v[i] = v[i - 1] + 1;
        }
        else
        {
            v[i] = v[i - 1];
        }
    }

    for (int i = 1; i <= n - l + 1; i++)
    {
        for (int j = i + l - 1; j <= n; j++)
        {
            if (v[i] == v[i - 1])
            {
                if (v[j] - v[i - 1] + 1 >= l && v[j] - v[i - 1] + 1 <= u)
                {
                    nr_sol++;
                }
            }
            else
            {
                if (v[j] - v[i - 1] >= l && v[j] - v[i - 1] <= u)
                {
                    nr_sol++;
                }
            }
        }
    }

    out << nr_sol << '\n';

    return 0;
}