Cod sursa(job #3267461)

Utilizator pkseVlad Bondoc pkse Data 11 ianuarie 2025 11:57:39
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <map>
using namespace std;
ifstream cin("secv5.in");
ofstream cout("secv5.out");

map<int, int> m, m2;
int w[1050000];

int main() {
    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;
}