Cod sursa(job #1474534)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 22 august 2015 10:57:29
Problema Secventa 5 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>
#include<map>
#define dim (1<<20) + 2
using namespace std;
long long n,L,U,rez,a,b;
unsigned int i,j,v[dim];
map<unsigned int, unsigned int>H;
inline long long Secv(int nr)
{
    rez=0;
    for(i=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("%lld %lld %lld\n",&n,&L,&U);
    for(;i<n;++i) scanf("%ud",&v[i]);
    a=Secv(U);
    H.clear();
    b=Secv(L-1);
    printf("%lld",a-b);
    return 0;
}