Cod sursa(job #2399866)

Utilizator sichetpaulSichet Paul sichetpaul Data 8 aprilie 2019 09:45:46
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <unordered_map>
#define DIM (1<<20)+1
using namespace std;
int v[DIM];
unordered_map <int,int> st,dr;
int main()
{    int l,u,n,i,j,k,cnt1=0,cnt2=0;long long ans=0;
    ifstream f("secv5.in");
    ofstream g("secv5.out");
    f>>n>>l>>u;
    i=1,j=1;
    for (k=1;k<=n;++k) {
        f>>v[k];
        st[v[k]]++;
        dr[v[k]]++;
        if (st[v[k]]==1) ++cnt1;
        if (dr[v[k]]==1) ++cnt2;

        while (cnt2>u && j<k) {
             --dr[v[j]];
             if  (dr[v[j]]==0) --cnt2;
             ++j;
        }

    if (cnt1>=l) {
        while (cnt1>=l && i<=k) {
            --st[v[i]];
            if (st[v[i]]==0) --cnt1;
            ++i;
        }
           --i;
            ++st[v[i]];
            if (st[v[i]]==1 && i<=n) ++cnt1;
          }

            if (cnt1>=l) ans+=i-j+1;
    }

      g<<ans<<'\n';

    return 0;
}