Cod sursa(job #3325753)

Utilizator AlexRocaRoca Alexandru AlexRoca Data 26 noiembrie 2025 12:11:14
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
unsigned int arr[1048577]; //2^20+1
int n;
long long nrsecv(int x) //numarul de secvente cu cel mult x elemente distincte
{
    long long rez=0;
    int l=1, nrdist=0;
    unordered_map<unsigned int, int> frecv;
    for(int r=1; r<=n; r++)
    {
        frecv[arr[r]]++;
        if(frecv[arr[r]]==1) nrdist++;
        while(l<=r and nrdist>x)
        {
            frecv[arr[l]]--;
            if(!frecv[arr[l]]) nrdist--;
            l++;
        }
        rez+=(r-l+1);
    }
    return rez;
}
int main()
{
    int l, u;
    cin>>n>>l>>u;
    for(int i=1; i<=n; i++) cin>>arr[i];
    cout<<nrsecv(u)-nrsecv(l-1);
}