Cod sursa(job #1572674)

Utilizator drobertDumitru Robert drobert Data 19 ianuarie 2016 00:37:51
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");

#define ll long long
#define NMAX 1<<20 + 1

int n, l, u, v[NMAX];
ll nr1, nr2;
unordered_map<int, int> h;

ll check(int lim)
{
    ll rez = 0;
    int i, j;
    i = j = 1;
    for (;i < n;i++)
    {
        h[v[i]]++;
        while (h.size() > lim)
        {
            h[v[j]]--;
            if (!h[v[j]]) h.erase(v[j]);
            j++;
        }
        rez += 1LL * (i - j + 1);
    }
    return rez;
}

int main()
{
    int i, j;
    f>>n>>l>>u;
    for (i = 1;i <= n;i++) f>>v[i];
    nr1 = check(l);
    h.clear();
    nr2 = check(u);
    g<<nr2 - nr1;
}