Cod sursa(job #3318203)

Utilizator Floroiu_MariusFloroiu Marius Cristian Floroiu_Marius Data 27 octombrie 2025 15:05:17
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
int n,l,u;
const int Nmax=(1<<20)+3;
unsigned int a[Nmax],b[Nmax];
const int Z=4096;
int v[Nmax];
int fr[Nmax];
long long nr_secv(int k)
{
    int st=1,rem=0;
    long long cnt=0;
    for (int i=1;i<=n;i++)
    {
        fr[v[i]]++;
        if (fr[v[i]]==1) rem++;
        while (rem>k)
        {
            fr[v[st]]--;
            if (fr[v[st]]==0) rem--;
            st++;
        }
        cnt=cnt+(i-st+1);
    }
    return cnt;
}
char s[Z];
int p=Z;
inline char A()
{
    if(p==Z)
        fin.read(s,Z),p=0;
    return s[p++];
}
unsigned B()
{
    unsigned n=0;
    for(char c=A();c>47;n=c-48+n*10,c=A());
    return n;
}
int main()
{
    n=B();
    l=B();
    u=B();
    for (int i=1;i<=n;i++)
    {
        a[i]=B();
        b[i]=a[i];
    }
    sort(b+1,b+n+1);
    for (int i=1;i<=n;i++)
        v[i]=lower_bound(b+1,b+n+1,a[i])-b;
    long long nr1=nr_secv(l-1);
    memset(fr,0,sizeof(fr));
    long long nr2=nr_secv(u);
    fout<<nr2-nr1;
    return 0;
}