Cod sursa(job #28981)

Utilizator ionescu_bogdanIonescu Bogdan-Gabriel ionescu_bogdan Data 8 martie 2007 15:02:55
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <map>
using namespace std;

#define nmax 1050000

int l,u,n,i,j,a[nmax],nr,low[nmax];
long long rr;
int h[nmax];

long long solve(int x)
{
    i=nr=0;
    for (j=0;j<n;j++)
    {
        if (h[a[j]]==0)
            ++nr;
        h[a[j]]++;
        while (nr>x)
        {
            if (h[a[i]]==1)
                --nr;
            h[a[i]]--;
            i++;
        }
        low[j]=i;
    }
    for (;i<n;i++)
        h[a[i]]--;
    rr=0;
    for (i=0;i<n;i++)
        rr+=i-low[i]+1;
    return rr;
}

int main()
{
    freopen("secv5.in","r",stdin);
    freopen("secv5.out","w",stdout);
    
    scanf("%d%d%d",&n,&l,&u);
    for (i=0;i<n;i++)
        scanf("%d",a+i);
    printf("%lld\n",solve(u)-solve(l-1));

    return 0;
}