Cod sursa(job #1995120)

Utilizator Y0da1NUME JMECHER Y0da1 Data 26 iunie 2017 23:59:33
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <unordered_map>

using namespace std;

int N, L, U;
int nr[1050000];
int main()
{
    int i, cnt, j, s1=0, s2=0;

    unordered_map<int, int> aparitii;
    ifstream in ("secv5.in");
    ofstream out ("secv5.out");

    in>>N>>L>>U;

    for (i=1;i<=N;++i)
        in>>nr[i];
    cnt=0;j=1;
    for (i=1;i<=N;++i)
    {
        aparitii[nr[i]]++;
        if(aparitii[nr[i]]==1) //am inserat o valoare noua
            ++cnt;
        while(cnt >= L)
        {
            aparitii[nr[j]]--;
            if(!aparitii[nr[j]])
            {
                aparitii.erase(nr[j]);
                --cnt;
            }
            ++j;
        }
        s1=s1+i-j+1;
    }
    aparitii.clear();
    j=1;
    cnt  =0;
    for (i=1;i<=N;++i)
    {
        aparitii[nr[i]]++;
        if(aparitii[nr[i]]==1) //am inserat o valoare noua
            ++cnt;
        while(cnt > U)
        {
            aparitii[nr[j]]--;
            if(!aparitii[nr[j]])
            {
                aparitii.erase(nr[j]);
                --cnt;
            }
            ++j;
        }
        s2=s2+i-j+1;
    }
    out<<s2-s1;

}