Cod sursa(job #3171095)

Utilizator andreidumitrache1709Dumitrache Andrei Bogdan andreidumitrache1709 Data 18 noiembrie 2023 13:00:34
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 0.76 kb
#include <fstream>
#include <unordered_map>
using namespace std;
long long v[1000001];
int main() {
    ifstream cin ( "secv5.in" );
    ofstream cout ( "secv5.out" );
    int x , y , i , n;
    cin >> n >> x >> y;
    for ( i = 1 ; i <= n ; i++ )
        cin >> v[i];
    auto count = [&](int max) {
        int64_t ans = 0;
        unordered_map<int, int> frq;
        int l = 1, cnt = 0;
        for (int r = 1; r <= n; r++) {
            if (++frq[v[r]] == 1)
                while (++cnt > max) {
                    if (--frq[v[l]] == 0)
                        cnt--;
                    l++;
                }
            ans += r - l + 1;
        }
        return ans;
    };
    (cout << ( count(y) - count(x - 1) ) ) << '\n';
    return 0;
}