Cod sursa(job #2958387)

Utilizator francescom_481francesco martinut francescom_481 Data 26 decembrie 2022 13:51:54
Problema Secventa 5 Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<bits/stdc++.h>

using namespace std;

ifstream fin("secv5.in");
ofstream fout("secv5.out");
#define cin fin
#define cout fout

#define N 2000005
#define power 73
#define mod 66666013
#define oo 1e18

long long n, l, u, v[N];
map < long long , long long > f;

long long fa(long long dif)
{
    f.clear();
    long long st = 1, rez = 0, acum = 0;
    for(long long i = 1 ; i <= n ; i++)
    {
        f[v[i]]++;
        if(f[v[i]] == 1)acum++;
        while(acum > dif  &&  st <= n)
        {
            f[v[st]]--;
            if(f[v[st]] == 0)acum--;
            st++;
        }
        rez += i-st+1;
    }
    return rez;
}

int main()
{
    cin >> n >> l >> u;
    for(long long i = 1 ; i <= n ; i++)cin >> v[i];
    cout << fa(u)-fa(l-1);
    return 0;
}