Cod sursa(job #2951836)

Utilizator RobstonerSchmidt Robert Robstoner Data 7 decembrie 2022 14:42:16
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <unordered_map>

using namespace std;

ifstream fin("secv5.in");
ofstream fout("secv5.out");

#define int long long

const int max_size = (1 << 20) + 1;

int v[max_size], n;
unordered_map<int, int> m;

int secvente(int dif)
{
    int st = 1, sol = 0, k = 0;

    for (int i = 1; i <= n; i++)
    {
        if (m[v[i]] == 0)
        {
            k++;
        }

        m[v[i]]++;

        while (st <= i && k > dif)
        {
            m[v[st]]--;

            if (m[v[st]] == 0)
            {
                k--;
            }

            st++;
        }

        sol += i - st + 1;
    }

    m.clear();

    return sol;
}
int main()
{
    int l, u;
    fin >> n >> l >> u;

    for (int i = 1; i <= n; i++)
    {
        fin >> v[i];
    }

    fout << secvente(u) - secvente(l - 1);

    return 0;
}