Cod sursa(job #3325180)

Utilizator Sebi_Ionescu17ionescu sebastian Sebi_Ionescu17 Data 24 noiembrie 2025 21:50:43
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
int main() {
    
    int N, L, U;
    fin >> N >> L >> U;

    vector<long long> a(N);
    for (int i = 0; i < N; i++)
        fin >> a[i];

    long long ansU = 0, ansL = 0;

   
    {
        unordered_map<long long,int> freq;
        int left = 0, distinct = 0;

        for (int right = 0; right < N; right++) {
            if (++freq[a[right]] == 1)
                distinct++;

            while (distinct > U) {
                if (--freq[a[left]] == 0)
                    distinct--;
                left++;
            }

            ansU += (right - left + 1);
        }
    }

    {
        int K = L - 1;
        unordered_map<long long,int> freq;
        int left = 0, distinct = 0;

        for (int right = 0; right < N; right++) {
            if (++freq[a[right]] == 1)
                distinct++;

            while (distinct > K) {
                if (--freq[a[left]] == 0)
                    distinct--;
                left++;
            }

            ansL += (right - left + 1);
        }
    }

    fout << ansU - ansL;
    return 0;
}