Cod sursa(job #2259310)

Utilizator qwerty1234qwerty qwerty1234 Data 13 octombrie 2018 11:28:17
Problema Secventa 5 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb

#include <bits/stdc++.h>

using namespace std;


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


const int Nmax = 2e6;



unsigned int a[Nmax];


int n , L , U;


inline long long Sum(int C)
{
    int j , i , nrd;
    long long s;
    unordered_map < unsigned int, int > M;
    j = 1;
    nrd = 0;
    s = 0;
    for(i = 1 ; i <= n ; i++)
    {
        ++M[a[i]];
        if(M[a[i]] == 1)
            ++nrd;
        while(nrd > C && j <= i)
        {
            --M[a[j]];
            if(M[a[j]] == 0)
                --nrd;
            ++j;

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


int main()
{
    fin >> n >> L >> U;
    for(int i = 1 ; i <= n ; i++)
        fin >> a[i];
    fout << Sum(U) - Sum(L - 1) << "\n";
    fin.close();
    fout.close();
    return 0;
}