Cod sursa(job #3194040)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 16 ianuarie 2024 18:56:12
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("secv5.in");
ofstream fout("secv5.out");
long long n, l, u, i, a[1048578];

static inline long long Calc(long long val) {
    unordered_map<long long, long long> fr;
    long long r = 0, nr = 0;

    long long j = 1;
    for(i = 1; i <= n; i++) {
        fr[a[i]]++;
        if(fr[a[i]] == 1) nr++;

        while(nr > val && j <= i) {
            fr[a[j]]--;
            if(fr[a[j]] == 0) nr--;
            j++;
        }
        r += i - j + 1;
    }

    return r;
}

int main() {
    fin >> n >> l >> u;
    for(i = 1; i <= n; i++) fin >> a[i];

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

    return 0;
}