Cod sursa(job #2858541)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 27 februarie 2022 19:37:06
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
#define nmax (2<<20)+5
using namespace std;

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

unordered_map<int,int> m;
int v[nmax];
int freq[nmax];
int n;

int64_t f(int lim)
{
    memset(freq,0,sizeof freq);
    int64_t res=0;
    int elem=0;
    int j=0;

    for(int i=0;i<n;i++)
    {
        if(freq[m[v[i]]]==0)
        {
            elem++;
        }
        freq[m[v[i]]]++;

        while(j<=i&&elem>lim)
        {
            freq[m[v[j]]]--;
            if(freq[m[v[j]]]==0)
            {
                elem--;
            }

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

int main()
{
    int l,u;
    in>>n>>l>>u;
    int nrnorm=0;
    for(int i=0;i<n;i++)
    {
        in>>v[i];
        if(!m[v[i]])m[v[i]]=nrnorm++;
    }
    out<<f(u)-f(l-1);
}