Cod sursa(job #2885052)

Utilizator StanCatalinStanCatalin StanCatalin Data 5 aprilie 2022 14:41:44
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>
#include <unordered_map>

using namespace std;

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

int n, l, u;
unordered_map<int, int> mp_u;
unordered_map<int, int> mp_l;
unordered_map<int, int> elem;

int main()
{
    int x;
    in >> n >> l >> u;
    int calcul_u = 0;
    int calcul_l = 0;
    int j = 1;
    int k = 1;
    for (int i=1; i<=n; i++) {
            in >> x;
            elem[i] = x;
            mp_u[x] ++;
            if (mp_u.size() > u) {
                    while (mp_u.size() > u) {
                        mp_u[elem[j]]--;
                        if (mp_u[elem[j]] == 0) {
                            mp_u.erase(elem[j]);
                        }
                        j++;
                    }
            }
            calcul_u += (i - j + 1);

            mp_l[x] ++;
            if (mp_l.size() >= l) {
                    while (mp_l.size() >= l) {
                        mp_l[elem[k]]--;
                        if (mp_l[elem[k]] == 0) {
                            mp_l.erase(elem[k]);
                        }
                        k++;
                    }
            }
            calcul_l += (i - k + 1);
    }
    out << calcul_u - calcul_l;
    return 0;
}