Cod sursa(job #1528482)

Utilizator margikiMargeloiu Andrei margiki Data 19 noiembrie 2015 19:11:52
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
# include <fstream>
# include <algorithm>
# include <vector>
# include <unordered_map>
# define NR 1100000
# define f first
# define s second
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
unordered_map <unsigned int, int> M;
int i,j,n,m,L,U;
int cod[NR];
unsigned int A[NR];
// numarul de secvente cu pana la L elemente diferite
long long numara (int L) {

    M.clear();

    long long sol=0, Edif=0, ci=1;

    for (int i=1; i<=n; ++i) {
        ++M[A[i]];
        while (M.size()>L) {
            --M[A[ci]];
            if (M[A[ci]]==0) M.erase(A[ci]);
            ++ci;
        }
        sol+=i-ci+1;
    }

    return sol;
}
int main ()
{
    f>>n>>L>>U;
    for (i=1; i<=n; ++i)
        f>>A[i];

    g<<numara(U) - numara(L-1);

    return 0;
}