Cod sursa(job #2443144)

Utilizator florin_salamFlorin Salam florin_salam Data 26 iulie 2019 17:51:43
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <unordered_map>

using namespace std;

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

long long Query(int sz)
{
    unordered_map <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()
{
    ifstream fin("secv5.in");
    ofstream fout("secv5.out");
    fin >> n >> l >> u;
    for (int i = 1;i <= n;++i)
        fin >> v[i];
    fout << Query(u) - Query(l - 1) << "\n";
    fin.close();
    fout.close();
    return 0;
}