Cod sursa(job #2952358)

Utilizator AndreiBOTOBotocan Andrei AndreiBOTO Data 9 decembrie 2022 00:37:11
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <algorithm>

///#include <tryhardmode>
///#include <GODMODE::ON>

using namespace std;

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

unordered_map<long long,long long>mp;

const long long NMAX=(1<<20);
long long v[NMAX];

int main()
{
    long long n,l,u,i;
    fin>>n>>l>>u;
    for(i=1;i<=n;i++)
        fin>>v[i];
    long long kon1=0,kon2=0,j=1;
    long long dist1=0,dist2=0;
    for(i=1;i<=n;i++)
    {
        mp[v[i]]++;
        if(mp[v[i]]==1)
            dist1++;
        while(dist1>u)
        {
            if(mp[v[j]]==1)
                dist1--;
            mp[v[j]]--;
            j++;
            if(j>i)
                break;
        }
        kon1=kon1+i-j+1;
    }
    mp.clear();
    j=1;
    for(i=1;i<=n;i++)
    {
        mp[v[i]]++;
        if(mp[v[i]]==1)
            dist2++;
        while(dist2>l-1)
        {
            if(mp[v[j]]==1)
                dist2--;
            mp[v[j]]--;
            j++;
            if(j>i)
                break;
        }
        kon2=kon2+i-j+1;
    }
    fout<<kon1-kon2;
    return 0;
}