Cod sursa(job #3325486)

Utilizator luca.rares.andreiLuca Rares Andrei luca.rares.andrei Data 25 noiembrie 2025 16:30:51
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,unroll-loops")
using namespace std;

#define ll long long

unsigned int a[1048577]; // 2^20 + 1
int n;

ll func(int c) {
    ll ans = 0;
    int l = 1, r, nr_dist = 0;
    unordered_map<unsigned int, int> freq;
    for (r = 1; r <= n; r++) {
        freq[a[r]]++;
        if (freq[a[r]] == 1) 
            nr_dist++;
        
        while (l <= r && nr_dist > c) {
            freq[a[l]]--;
            if (freq[a[l]] == 0) {
                freq.erase(a[l]);
                nr_dist--;
            }
            l++;

        }
        ans+=(r-l+1);
    }
    return ans;
}

int main(void) {
    ifstream cin("secv5.in");
    ofstream cout("secv5.out");
    
    int L, U, i;
    cin >> n >> L >> U;
    for (i = 1; i <= n; i++) 
        cin >> a[i];

    cout << func(U)-func(L-1);
    
    return 0;
}