Cod sursa(job #3350053)

Utilizator matei__bBenchea Matei matei__b Data 5 aprilie 2026 02:31:41
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
/*



*/

#include <bits/stdc++.h>
#define ll long long

const int NMAX=(1<<20)+8;

int n,l,r;
ll a[NMAX];

ll get_ans(int x) {
    if(x==0)
        return 0;

    std::unordered_map<ll,int> curr;
    ll ans=0;
    int dr=1,cnt=0;
    for(int st=1; st<=n; st++) {
        while(dr<=n) {
            curr[a[dr]]++;
            if(curr[a[dr]]==1)
                cnt++;

            if(cnt>x){
                curr[a[dr]]--;
                cnt--;
                break;
            }
            dr++;
        }

        ans+=(dr-st);
        curr[a[st]]--;
        if(curr[a[st]]==0)
            cnt--;
    }

    return ans;
}

int main() 
{
    std::ifstream fin("secv5.in");
    std::ofstream fout("secv5.out");

    fin >> n >> l >> r;
    for(int i=1; i<=n; i++)
        fin >> a[i];

    fout << get_ans(r)-get_ans(l-1) << "\n";

    return 0;
}