Cod sursa(job #3267480)

Utilizator pkseVlad Bondoc pkse Data 11 ianuarie 2025 12:23:58
Problema Secventa 5 Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <unordered_map>
// #define int unsigned long long
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");

unordered_map<unsigned long long, int> m, m2;
unsigned long long w[1050000];

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, l, u, dcnt = 0, cnt = 0, st = 1, lcnt = 0, stl = 1; cin >> n >> l >> u;
    for(int i = 1; i <= n; i ++){
        cin >> w[i];
        if(m[w[i]] == 0)
            dcnt ++;
        if(m2[w[i]] == 0)
            lcnt ++;
        m[w[i]] ++;
        m2[w[i]] ++;
        while(dcnt > u) {
            m[w[st]]--;
            if(m[w[st]] == 0)
                m.erase(w[st]), dcnt --;
            st ++;
        }
        bool b = false;
        while(lcnt >= l) {
            m2[w[stl]]--;
            if(m2[w[stl]] == 0)
                m2.erase(w[stl]), lcnt --;
            stl ++;
            b = true;
        }
        if(b){
            stl --;
            m2[w[stl]] ++;
            lcnt ++;
        }
        if(lcnt >= l){
            cnt += stl - st + 1;
            // cout << st << ' ' << stl << ' ' << i << '\n';
        }
    }
    cout << cnt;
}