Cod sursa(job #2561044)

Utilizator victorzarzuZarzu Victor victorzarzu Data 28 februarie 2020 15:56:09
Problema Secventa 5 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long int unll;
ifstream f("secv5.in");
ofstream g("secv5.out");

unll n , l, u;
unll lef , rig, ans;
unll v[1 << 20 + 5];
unordered_map<int,int> lf, rt;

void Read()
{
    f>>n>>l>>u;
    for(int i = 1;i <= n;++i)
        f>>v[i];
}

void Solve()
{
    lef = rig = 1;
    for(int i = 1;i <= n;++i)
    {
        lf[v[i]]++;
        rt[v[i]]++;

        while(lf.size() >= l)
        {
            lf[v[lef]]--;
            if(lf[v[lef]] == 0)
                lf.erase(v[lef]);
            ++lef;
        }

        while(rt.size() > u)
        {
            rt[v[rig]]--;
            if(rt[v[rig]] == 0)
                rt.erase(v[rig]);
            ++rig;
        }

        ans += lef - rig;
    }

    g<<ans<<'\n';
}

int main()
{
    Read();
    Solve();
    return 0;
}