Cod sursa(job #2546497)

Utilizator stefantagaTaga Stefan stefantaga Data 14 februarie 2020 11:09:24
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
map <int,int> m;
int v[2000005],n,l,u,nr,i,q,suma,sum[2000005],st,dr,fr[2000005],pozitie;
struct wow
{
    int nr,fr;
}numere[2000000];
int main()
{
    f>>n>>l>>u;
    for (i=1;i<=n;i++)
    {
        f>>v[i];
        m[v[i]]=1;
    }
    for (auto ind:m)
    {
        nr++;
        m[ind.first]=nr;
    }
    for (i=1;i<=n;i++)
    {
        v[i]=m[v[i]];
    }
    nr=0;
    st=1;
    dr=0;
    for (i=1;i<=n;i++)
    {
        if (fr[v[i]]==0)
        {
            fr[v[i]]++;
            nr++;
            pozitie++;
            dr++;
        }
        else
        {
            fr[v[i]]++;
        }
        if (nr==l)
        {
            pozitie=i-1;
        }
        while (nr>u)
        {
            fr[v[st]]-=v[st];
            if (fr[v[st]]==0)
            {
                nr--;
            }
            st++;
            pozitie++;
        }
        if (l<=nr&&nr<=u)
        {
            suma=suma+pozitie-(st-1);
        }
    }
    g<<suma;
    return 0;
}