Cod sursa(job #1279664)

Utilizator PetreCatalinFMI Petre Catalin PetreCatalin Data 30 noiembrie 2014 18:40:15
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <unordered_map>

using namespace std;

unsigned long n,l,u,i,v[1065000];

long long Count(unsigned long nr) {
    unordered_map<unsigned long, long> stiva;
    int st=1;
    long long sol=0;
    for (unsigned long i=1;i<=n;++i) {
        ++stiva[v[i]];
        while (stiva.size()>nr) {
            --stiva[v[st]];
            if (stiva[v[st]]==0)
                stiva.erase(v[st]);
            ++st;
        }
        sol+=i-st+1;
    }
    return sol;
}

int main()
{
    freopen ("secv5.in","r",stdin);
    freopen ("secv5.out","w",stdout);
    scanf("%d%d%d",&n,&l,&u);
    for (i=1;i<=n;i++)
        scanf("%d",&v[i]);

    printf("%ld",Count(u)-Count(l-1));
    fclose(stdin);
    fclose(stdout);
    return 0;
}