Cod sursa(job #1459244)

Utilizator mirupetPetcan Miruna mirupet Data 9 iulie 2015 14:45:22
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
#include<map>
#define dim (1<<20) + 2
using namespace std;

int n,L,U,x,i;
long long int a, b;
unsigned int v[dim];
map<unsigned int,unsigned int> H;

long long int Secv(int nr)
{
    long long int rez = 0, i, j;


    for(i = 0, j = 0; i < n; ++i)
    {
        ++H[v[i]];

        while( H.size() > nr )
        {
            --H[v[j]];
            if( !H[v[j]] )
                H.erase(v[j]);
            ++j;
        }
        rez += 1LL * ( 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 ( i = 0; i < n; i++)
            scanf("%d", &v[i]);
        a= Secv(U); H.clear();
        b= Secv(L - 1);

        printf("%lld\n", a - b);
    }