Cod sursa(job #3182837)

Utilizator AndreiDragosDavidDragos Andrei David AndreiDragosDavid Data 9 decembrie 2023 20:55:28
Problema Secventa 5 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>
#define ll long long

using namespace std;

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

const int maxn = (1<<20)+5;

int n, L, U;
ll a[maxn];
unordered_map<ll, int> cnt;

ll func(int dis){
    cnt.clear();
    int l=0, dct=0;
    ll res=0;

    for(int r=0; r<n; r++){
        if(++cnt[a[r]] == 1){
            dct++;

            while(dct>dis && l<r){
                if(--cnt[a[l]] == 0)
                    dct--;
                ++l;
            }
        }

        res+=r-l;
    }

    return res;
}

int main() {
   in >> n >> L >> U;

    for(long i=0; i<n; ++i){
        in >> a[i];
    }

    out << func(U) - func(L-1);

    return 0;
}