Cod sursa(job #2698986)

Utilizator Mihai_PredaPreda Mihai Dragos Mihai_Preda Data 23 ianuarie 2021 13:53:06
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <map>

using namespace std;
map<int,int> f;
int v[1100000];
int main()
{
    ifstream in("secv5.in");
    ofstream out("secv5.out");
    int n,a,b;
    in>>n>>a>>b;
    for(int i=0; i<n; i++)
    {
        in>>v[i];
    }
    int cnt1=0,j=0,dist=1,cnt2=0;
    f[v[0]]=1;
    for(int i=0; i<n; i++)
    {
        if(i>0)
        {
            f[v[i-1]]--;
            if(f[v[i-1]]==0) dist--;
        }
        while(j<n && dist<=b)
        {
            j++;
            f[v[j]]++;
            if(f[v[j]]==1) dist++;
        }
        cnt1+=(j-1)-i+1;
    }
    j=0;
    dist=1;
    f.clear();
    f[v[0]]=1;
    for(int i=0; i<n; i++)
    {
        if(i>0)
        {
            f[v[i-1]]--;
            if(f[v[i-1]]==0) dist--;
        }
        while(j<n && dist<=a-1)
        {
            j++;
            f[v[j]]++;
            if(f[v[j]]==1) dist++;
        }
        cnt2+=(j-1)-i+1;
    }
    out<<cnt1-cnt2;
    return 0;
}