Cod sursa(job #3362416)

Utilizator And_etcAndrei P And_etc Data 8 august 2026 16:28:11
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <bits/stdc++.h>

using namespace std;

unsigned long long int n,s[100000555];

unordered_map<unsigned long long int,int> f;

void up(int in,int up)
{
    while(in<=n)
    {
        s[in]+=up;
        in+=in&(-in);
    }
}

unsigned long long int sm(int in)
{
    unsigned long long int sum=0;
    while(in>=1)

    {
        sum+=s[in];
        in-=in&(-in);
    }
    return sum;
}

int main()
{
    ifstream cin("secv5.in");
    ofstream cout("secv5.out");
    unsigned long long int x,a,b,dif=0,cnt=0;
    cin>>n>>a>>b;
    for(int i=1;i<=n;++i)
    {
        cin>>x;
        if(f[x]!=0)
        {
            up(f[x],-1);

        }
        else
        {
            ++dif;
        }
        f[x]=i;
        up(i,1);
        unsigned long long int st=1,dr=i,mij,i1=1,i2=0;
        if(i==3)
        {
           // cout<<x<<" ";
        }

        while(st<=dr)
        {
            mij=(st+dr)/2;
            unsigned long long int nr=dif-sm(mij-1);
            if(nr>=a)
            {
                st=mij+1;
                i2=mij;
            }
            else
            {
                dr=mij-1;
            }
        }
        st=1;
        dr=i;
        while(st<=dr)
        {
            mij=(st+dr)/2;
            unsigned long long int nr=dif-sm(mij-1);
            if(nr<=b)
            {
                dr=mij-1;
                i1=mij;
            }
            else
            {
                st=mij+1;
            }
        }
        cnt=cnt+(i2-i1+1);
        //cout<<i2<<" "<<i1<<"\n";
    }
    cout<<cnt;
    return 0;
}