Cod sursa(job #2608837)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 1 mai 2020 19:44:51
Problema Secventa 5 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <unordered_map>

using namespace std;

const int MAXN = (1<<20)+5;
int n, L, U;
unsigned int values[MAXN];

long long compute(int x)
{
    unordered_map<unsigned int, int> m;
    int st = 0;
    long long sol = 0;
    for (int dr = 0; dr < n; dr++) {
        ++m[values[dr]];
        while (m.size() > x) {
            if ((--m[values[st]]) == 0)
                m.erase(values[st]);
            ++st;
        }
        sol += dr - st +1;
    }
    return sol;
}

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

    fin >> n >> L >> U;
    for (int i = 0; i < n; i++)
        fin >> values[i];
    long long rez = compute(U) - compute(L-1);
    fout << rez;

    return 0;
}