Cod sursa(job #3316548)

Utilizator popescu_georgePopescu George popescu_george Data 19 octombrie 2025 10:53:02
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
#include<cstring>
#include<unordered_map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");
const int Z=4096;
unsigned a[1048576],c[1048576],n,p=Z;
unordered_map<int,int> b;
char s[Z];
inline char A()
{
    if(p==Z)
        cin.read(s,Z),p=0;
    return s[p++];
}
unsigned B()
{
    unsigned n=0;
    char c=A();
    for(;c>47;n=c-48+n*10,c=A());
    return n;
}
long long C(int l)
{
    memset(c,0,sizeof c);
    unsigned i=0,j=0,k=0;
    long long w=0;
    for(;j<n&&k<l;++j) {
        if(!c[a[j]])
            ++k;
        ++c[a[j]],w+=j;
    }
    for(w+=j;j<n;) {
        if(!c[a[j]])
            ++k;
        for(++c[a[j++]];i<n&&k>l;++i)
            if(!--c[a[i]])
                --k;
        w+=j-i;
    }
    return w;
}
int main()
{
    n=B();
    unsigned u=B(),v=B();
    for(unsigned i=0;i<n;a[i++]=B());
    for(unsigned i=0,m=0;i<n;b.find(a[i])==b.end()?b[a[i]]=m,a[i]=m++:a[i]=b[a[i]],++i);
    return cout<<C(v)-(u>1?C(u-1):0),0;
}