Cod sursa(job #3352576)

Utilizator indianu_talpa_iuteTisca Catalin indianu_talpa_iute Data 29 aprilie 2026 00:11:13
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
// https://www.infoarena.ro/problema/secv5

#include <fstream>
#include <unordered_map>
#define MAXSZ (1 << 20)

using namespace std;

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

unsigned int a[MAXSZ];

long long count_at_most(int n, int k) {
    if (k < 0)
        return 0;
    unordered_map<unsigned int, int> freq;
    long long ans = 0;
    int distinct = 0;
    int l = 0;
    for (int r = 0; r < n; r++) {
        if (freq[a[r]]++ == 0)
            distinct++;
        while (distinct > k) {
            if (--freq[a[l]] == 0)
                distinct--;
            l++;
        }
        ans += r - l + 1;
    }
    return ans;
}

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

    for (int i = 0; i < n; i++)
        fin >> a[i];

    fout << count_at_most(n, u) - count_at_most(n, l - 1) << '\n';
    return 0;
}