Cod sursa(job #1968482)

Utilizator ifrimencoAlexandru Ifrimenco ifrimenco Data 17 aprilie 2017 18:37:24
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <unordered_map>
#include <cmath>

using namespace std;

ifstream f("secv5.in");
ofstream g("secv5.out");

unsigned int n, mi, ma, v[1 << 20 + 5];

long long nr (unsigned int mi) {
    unordered_map <unsigned int, unsigned int> q;
    unsigned int pr = 1;
    int i;
    long long sol = 0;
    for (int i = 1; i <= n; ++i) {
        q[v[i]]++;
        while (q.size() > mi) {
            q[v[pr]]--;
            if (q[v[pr]] == 0) q.erase(v[pr]);
            pr++;
        }
        sol += 1LL * (i - pr + 1);
    }
    return sol;
}
int main()
{
    f >> n >> mi >> ma;
    for (int i = 1; i <= n; ++i)
        f >> v[i];
    g << nr(ma) - nr (mi - 1) << "\n";
    return 0;
}