Cod sursa(job #3349845)

Utilizator ungureanubogdanUngureanu Bogdan ungureanubogdan Data 2 aprilie 2026 19:27:33
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <vector>
#include <unordered_map>

using namespace std;

ifstream cin("secv5.in");
ofstream cout("secv5.out");

int n, l, u;
int v[1000001];

int res(int k) {
    unordered_map<int, int> m;
    int st = 1, dr = 1;
    m[v[1]] = 1;
    int diferite = 1;
    int ans = 0;
    
    while(st <= n && st <= dr) {
        if(diferite <= k) {
            ans++;
            if(dr < n) {
                dr++;
                m[v[dr]]++;
                if(m[v[dr]] == 1) diferite++;
            }
            else {
                int tmp = dr - st;
                ans += (tmp * (tmp + 1) )/ 2;
                st = dr;
                break;
            }
        }
        else {
            m.clear();
            int tmp = dr - st - 1;
            ans += (tmp * (tmp + 1))/ 2;
            st = dr;
            m[v[st]] = 1;
            diferite = 1;
        }
    }   

    return ans;
}

int main() {
    
    cin >> n >> l >> u;
    for(int i = 1; i <= n; ++i) {
        cin >> v[i];
    }

    cout << res(u) - res(l - 1);

    return 0;

}