Cod sursa(job #2906381)

Utilizator MoarcascosminMoarcas Cosmin Moarcascosmin Data 25 mai 2022 22:10:03
Problema Secventa 5 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <unordered_map>

using namespace std;

int n, l, u;
vector <long long> v;

void Citire() {
    ifstream f("secv5.in");
    f >> n >> l >> u;
    v.resize(n);
    for(int i = 0; i < n; i++) {
        f >> v[i];
    }
    f.close();
}

long long NrSecv(int k) {
    unordered_map <long long , int> valori;
    long long nr_secv = 0;
    int last = 0;

    for(int i = 0; i < n; i++) {
        valori[v[i]]++;
        // cout << "Marime: " << valori.size() << '\n';
        while(valori.size() > k) {
            valori[v[last]]--;
            if(valori[v[last]] == 0)
                valori.erase(v[last]);
            last++;
        }
        nr_secv += (i - last + 1);
    }
    return nr_secv;
}

void Afisare() {
    ofstream g("secv5.out");
    g << NrSecv(u) - NrSecv(l - 1);
    g.close();
}

int main() {
    Citire();
    Afisare();
    return 0;
}