Cod sursa(job #2042937)

Utilizator victoreVictor Popa victore Data 19 octombrie 2017 14:26:23
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdio>
#include<unordered_map>
#include<cstring>

using namespace std;

const int nmax=11e5 + 5;

typedef long long ll;

ll v[nmax];

ll n,u,l;

inline ll Sol(ll k)
{
    ll i=1,j,nr,cnt = 0;

    unordered_map<unsigned , int> HASH;

    for(j=1;j<=n;++j)
    {
        HASH[v[j]]++;
        while(HASH.size()>k)
        {
            nr = v[i++];
            HASH[nr]--;
            if(HASH[nr] == 0)
                HASH.erase(nr);
        }
        cnt += j-i+1;
    }

    return cnt;
}

int main()
{
    freopen("secv5.in","r",stdin);
    freopen("secv5.out","w",stdout);

    ll i,j;

    scanf("%lld%lld%lld\n",&n,&l,&u);

    for(i=1;i<=n;++i)
        scanf("%ud",&v[i]);

    printf("%lld",(Sol(u) - Sol(l-1)));

}