Cod sursa(job #2047190)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 24 octombrie 2017 17:14:04
Problema Secventa 5 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<tr1/unordered_map>
using namespace std;
using namespace tr1;
ifstream fi("secv5.in");
ofstream fo("secv5.out");
long long A[1048577],n,i,l,r;
unordered_map<int,long long> HashT;

long long calc(int lim)
//returneaza nr de siruri cu maxim lim elemente distincte
{
    int i,nrd=0,st=1;
    long long rez=0LL;
    HashT.clear();
    for(i=1; i<=n; i++)
    {
        HashT[A[i]]++;
        if(HashT[A[i]]==1)
            nrd++;
        while(nrd>lim)
        {
            HashT[A[st]]--;
            if(HashT[A[st]]==0)
                nrd--;
            st++;
        }
        rez=(long long)(rez+i-st+1LL);
    }
    return rez;
}

int main()
{
    fi>>n>>l>>r;
    for(i=1; i<=n; i++)
        fi>>A[i];
    fo<<calc(r)-calc(l-1)<<"\n";
    fi.close();
    fo.close();
    return 0;
}