Cod sursa(job #2647307)

Utilizator CONFUSION@@@@@ @@@ CONFUSION Data 3 septembrie 2020 21:08:56
Problema Secventa 5 Scor 80
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 0.82 kb
#include <bits/stdc++.h>
#define int unsigned long long // imi bag pula
using namespace std;

vector <int> v;
unordered_map <int, int> Hash;

int n, l, u;
unsigned long long go (int x) {
    Hash.clear();
    unsigned long long ans = 0;

    auto poz = v.begin();
    for (auto it = v.begin(); it != v.end(); ++it) {
        ++Hash[*it];
        while (Hash.size() > x) {
            if (--Hash[*poz] == 0)
                Hash.erase(*poz);
            poz++;
        }
        
        ans += it - poz + 1;
    }

    return ans;
}

signed main () {
    freopen("secv5.in", "r", stdin);
    freopen("secv5.out", "w", stdout);

    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    cin >> n >> l >> u;
    v.resize(n);
    for (auto &it: v)
        cin >> it;

    cout << go(u) - go(l - 1);
    return 0;
}