Cod sursa(job #3155440)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 8 octombrie 2023 12:47:45
Problema Secventa 5 Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>

using namespace std;

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

static inline long long calc(int m) {
    unordered_map<long long, long long> fr; /// nr, fr
    int nm = 0;


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

        while(nrd > m && j <= i) {
            fr[a[j]]--;
            if(fr[a[j]] == 0) nrd--;
            j++;
        }

        nm += (i - j + 1);
    }
    return nm;
}

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

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

    return 0;
}