Cod sursa(job #2524657)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 15 ianuarie 2020 23:13:02
Problema Secventa 5 Scor 90
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
#define DIM (1<<20 + 5)

using namespace std;

ifstream fin  ("secv5.in");
ofstream fout ("secv5.out");

unordered_map <unsigned int, int> st, dr;

unsigned int n, l, r;
unsigned int v[DIM];

long long a, b, sol;

int main(){
    fin >> n >> l >> r;
    for (int i=1; i<=n; i++){
        fin >> v[i];
    }
    a = b = 1;
    for (int i=1; i<=n; i++){
        st[v[i]]++, dr[v[i]]++;
        while (st.size() >= l){
            st[v[a]]--;
            if (st[v[a]] == 0){
                st.erase (v[a]);
            }
            a++;
        }
        while (dr.size() > r){
            dr[v[b]]--;
            if (dr[v[b]] == 0){
                dr.erase (v[b]);
            }
            b++;
        }
        sol += (i - b + 1)- (i - a + 1);
    }
    fout << sol;
    return 0;
}