Cod sursa(job #1573848)

Utilizator alexandru.ghergutAlexandru-Gabriel Ghergut alexandru.ghergut Data 19 ianuarie 2016 23:16:04
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <unordered_map>

using namespace std;

#define ull unsigned long long

ull getSeqNr(unsigned v[], int N, int x);

int main()
{
    int L, U, N, i;
    ifstream f("secv5.in");
    f >> N >> L >> U;

    unsigned a[N];
    for (i = 0; i < N; i++)
        f >> a[i];
    f.close();

    ofstream g("secv5.out");
    g << getSeqNr(a, N, U) - getSeqNr(a, N, L - 1);
    g.close();
    return 0;
}

ull getSeqNr(unsigned v[], int N, int x)
{
    unordered_map<int, int> m;
    int left = 0, i;
    ull nr = 0;
    for (i = 0; i < N; i++)
    {
        m[v[i]]++;
        while (m.size() > x)
        {
            m[v[left]]--;
            if (!m[v[left]])
                m.erase(v[left]);
            left++;
        }
        nr += i - left + 1;
    }

    return nr;
}