Cod sursa(job #3171089)

Utilizator PetruApostolApostol Mihnea Petru PetruApostol Data 18 noiembrie 2023 12:53:09
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <map>
using namespace std;

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

map<int,int> frv;
int v[1048577];

int main()
{
    int n,rasp=0,cnt=1,i,j,u,l;
    cin>>n>>u>>l;
    u--;
    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=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;
}