Cod sursa(job #2443152)

Utilizator florin_salamFlorin Salam florin_salam Data 26 iulie 2019 18:23:03
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <unordered_map>

using namespace std;

const int NMAX = (1 << 20) + 5;
unsigned int n, l, u, v[NMAX];

long long Query(int sz)
{
    unordered_map <unsigned int, int> cnt;
    long long ret = 0;
    int p = 1;
    for (int i = 1;i <= n;++i)
    {
        ++cnt[v[i]];
        while (cnt.size() > sz)
        {
            --cnt[v[p]];
            if (cnt[v[p]] == 0)
                cnt.erase(v[p]);
            ++p;
        }
        ret += i - p + 1;
    }
    return ret;

}

int main()
{
    FILE *fin = fopen("secv5.in", "r");
    FILE *fout = fopen("secv5.out", "w");
    fscanf(fin, "%ld%ld%ld", &n, &l, &u);
    for (int i = 1;i <= n;++i)
        fscanf(fin, "%ld", &v[i]);
    fprintf(fout, "%ld\n", Query(u) - Query(l - 1));
    fclose(fin);
    fclose(fout);
    return 0;
}