Cod sursa(job #1279660)

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

using namespace std;

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

long long Count(long long nr) {
    unordered_map<long, long> stiva;
    int st = 1;
    long long sol = 0;
    for (int 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("%d",Count(u)-Count(l-1));
    fclose(stdin);
    fclose(stdout);
    return 0;
}