Cod sursa(job #1318821)

Utilizator FiliutaMariusFMI Filiuta Marius FiliutaMarius Data 16 ianuarie 2015 13:27:42
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 0.78 kb
#include<fstream>
#include<unordered_map>
using namespace std;
#define NMAX 1<<20
long long sol(unsigned int x,unsigned int v[NMAX],unsigned int n, unordered_map<unsigned int,unsigned int> H)
{
    long long rez=0;
    H.clear();
    for(int i=1,j=1;i<=n;++i)
    {
        H[v[i]]++;
        while(H.size()>x)
        {
            --H[v[j]];
            if(H[v[j]]==0)
                H.erase(v[j]);
            j++;
        }
        rez+=(i-j+1);
    }
    return rez;
}
int main()
{
    unsigned int n,l,u;
    ifstream in("secv5.in");
    ofstream out("secv5.out");
    unsigned int v[NMAX];
    unordered_map<unsigned int,unsigned int> H;
    in>>n>>l>>u;
    for (int i=1;i<=n;++i)
        in>>v[i];
    out<<sol(u,v,n,H)-sol(l-1,v,n,H);
    return 0;
}