Cod sursa(job #1284827)

Utilizator diana97Diana Ghinea diana97 Data 6 decembrie 2014 20:41:27
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
//#include <tr1/unordered_map>
#include <bits/stdc++.h>

using namespace std;
//using namespace std::tr1;

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

const int NMAX = (1 << 20) + 1;

int n, l, u;
unsigned int v[NMAX];

void citeste() {
    f >> n >> l >> u;
    for (int i = 1; i <= n; i++) f >> v[i];
}

long long secvente(int x) {
    unordered_map <unsigned int, int> h;
    long long sol = 0;
    unsigned int j = 1;
    for (int i = 1; i <= n; i++) {
        h[v[i]]++;
        while((int)h.size() > x) {
            h[v[j]]--;
            if (h[v[j]] == 0) h.erase(v[j]);
            j++;
        }
        sol += 1LL * (i - j + 1);
    }
    return sol;
}

int main() {
    citeste();
    g << secvente(u) - secvente(l - 1);
    return 0;
}