Cod sursa(job #1815311)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 25 noiembrie 2016 01:25:10
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;

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

unordered_map<unsigned int, int>H1, H2;
unsigned int v[1200000];
long long solution;

int main()
{
    int N, L, U;
    fin >> N >> L >> U;
    for(int i = 1; i <= N; i ++)
    {
        fin >> v[i];
    }

    int j = 1;
    for(int i = 1; i <= N; i ++)
    {
        H1[ v[i] ] ++;
        while(H1.size() > L - 1)
        {
            H1[ v[j] ] --;
            if(H1[v [j] ] == 0)
            {
                H1.erase(v[j]);
            }
            j ++;
        }
        solution -= i - j + 1;
    }
    j = 1;
    for(int i = 1; i <= N; i ++)
    {
        H2[ v[i] ] ++;
        while(H2.size() > U)
        {
            H2[ v[j] ] --;
            if(H2[v [j] ] == 0)
            {
                H2.erase(v[j]);
            }
            j ++;
        }
        solution += i - j + 1;
    }

    fout << solution;

    return 0;
}