Cod sursa(job #3349618)

Utilizator matei__bBenchea Matei matei__b Data 1 aprilie 2026 10:02:54
Problema Secventa 5 Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ld long double
#define pb push_back
#define mp make_pair
using namespace std;
 
constexpr const int NMAX=2e6+8;
constexpr const ll mod=1'000'000'007;
 
ifstream fin("secv5.in");
ofstream fout("secv5.out");

ll pw(ll baza,ll expo)
{
    ll ans=1LL;
    while(expo){
        if(expo&1){
            ans=(ans*baza)%mod;
        }
        expo>>=1;
        baza=(baza*baza)%mod;
    }
    return ans;
}

int n,st,dr;
int a[NMAX];

ll get_ans(int x) {
    ll ans=0;
    unordered_map<int,int> fq;
    int cnt=0,dr=0;
    for(int st=1; st<=n; st++){
        while(dr<=n && cnt<=x){
            dr++;
            fq[a[dr]]++;
            if(fq[a[dr]]==1)
                cnt++;
        }
        fq[a[dr]]--;
        if(fq[a[dr]]==0)
            cnt--;
        dr--;
        ans+=(dr-st+1);

        fq[a[st]]--;
        if(fq[a[st]]==0)
            cnt--;
    }

    return ans;
}

void solve() {
    fin >> n >> st >> dr;
    for(int i=1; i<=n; i++)
        fin >> a[i];

    fout << get_ans(dr)-get_ans(st-1) << "\n";
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    
    int tests=1;
    // cin >> tests;
    for(int i=1; i<=tests; i++)
        solve();
    
    return 0;
}

// you are everything i see, every time i blink, despair