Cod sursa(job #3185792)

Utilizator luca._.solosluca solos luca._.solos Data 20 decembrie 2023 14:02:39
Problema Secventa 5 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <unordered_map>
using namespace std;

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

unordered_map<long long,int> frv;
long long v[1048577];

int main()
{
    long long n,rasp=0,cnt=1,i,j,u,l;
    cin>>n>>u>>l;
    for(i=1;i<=n;i++) cin>>v[i];
    j=1;
    frv[v[1]]=1;
    ///pana la l
    for(i=1;i<=n;i++){
        while(j<=n && cnt<=l){
            j++;
            if(j<=n){
                if(frv[v[j]]==0) cnt++;
                frv[v[j]]++;
            }
        }
        rasp+=j-i;
        frv[v[i]]--;
        if(frv[v[i]]==0) cnt--;
    }
    frv.clear();
    ///pana la u-1
    j=cnt=1;
    frv[v[1]]=1;
    for(i=1;i<=n;i++){
        while(j<=n && cnt<=u-1){
            j++;
            if(j<=n){
                if(frv[v[j]]==0) cnt++;
                frv[v[j]]++;
            }
        }
        rasp-=(j-i);
        frv[v[i]]--;
        if(frv[v[i]]==0) cnt--;
    }
    cout<<rasp;
    return 0;
}