Cod sursa(job #1313616)

Utilizator gapdanPopescu George gapdan Data 10 ianuarie 2015 21:39:36
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>
#include<vector>
#include<map>
#define MOD 666013
#define NMAX 1<<20+2
using namespace std;
int n,l,u;
int v[NMAX];
map<int, int> H;
long long sol(int x)
{
    int i,j;
    long long rez=0;
    H.clear();
    for (i=1,j=1;i<=n;++i)
    {
        ++H[v[i]];
        while(H.size()>x)
        {
            --H[v[j]];
            ++j;
            if (H[v[j-1]]==0) H.erase(v[j-1]);
        }
        rez+=(i-j+1);
    }
    return rez;
}
int main()
{
    freopen("secv5.in","r",stdin);
    freopen("secv5.out","w",stdout);
    scanf("%d%d%d",&n,&l,&u);
    for (int i=1;i<=n;++i)
        scanf("%d",&v[i]);
    printf("%d\n",sol(u)-sol(l-1));
    return 0;
}