Cod sursa(job #2885092)

Utilizator CharacterMeCharacter Me CharacterMe Data 5 aprilie 2022 15:13:37
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>

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

int main() {

    int n, l, u;
    fin >> n >> l >> u;

    std::vector<long long int> vals(n);
    for (auto &it:vals) {
        fin >> it;
    }

    int lft = 0, rgtl = 0, rgtu = 0;

    std::unordered_map<long long int, int> mapl;
    std::unordered_map<long long int, int> mapu;

    long long int sol = 0LL;

    while (lft < n) {
        while (rgtl < n && mapl.size() < l) {
            ++mapl[vals[rgtl++]];
        }

        if (rgtl == n) {
            break;
        }

        while (rgtu != n && mapu.size() <= u) {
            ++mapu[vals[rgtu++]];
        }

        sol += 1LL * (rgtu - rgtl + (mapu.size() <= u));

        ++lft;
        if (lft < n) {
            if (--mapl[vals[lft]] == 0) {
                mapl.erase(vals[lft]);
            }
            if (--mapu[vals[lft]] == 0) {
                mapu.erase(vals[lft]);
            }
        }
    }

    fout << sol;

    return 0;
}