Cod sursa(job #2880218)

Utilizator alisavaAlin Sava alisava Data 29 martie 2022 15:23:44
Problema Secventa 5 Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;
map<unsigned int,int>M;
unsigned int  a[(1 << 20) + 20];
int n, L, U;

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

void Citire()
{
    fin >> n >> L >> U;
    for(int i = 1; i <= n; i++)
    {
        fin >> a[i];
    }
}
long long NrSecvente(int k)
{
    int i, j;
    long long cnt = 0;
    i = 1;
    for(j = 1; j <= n; j++)
    {

        M[a[j]]++;
        while(M.size() > k)
        {
            M[a[i]]--;
            if(M[a[i]] == 0) M.erase(a[i]);
            i++;

        }
        cnt+=(j - i + 1);
        ///adaug cele j-i+1 secvente
        ///care se termina cu a[j]
    }
    M.clear();
    return cnt;
}
int main()
{
    Citire();
    fout << NrSecvente(U) - NrSecvente(L - 1);
    return 0;
}