Cod sursa(job #1525161)

Utilizator cristina_borzaCristina Borza cristina_borza Data 14 noiembrie 2015 19:50:16
Problema Secventa 5 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <cstring>
#include <map>

#define NMAX 1500000

using namespace std;

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

long long n , p , u , v[NMAX] , sol[NMAX];
map <long long , long long> c;

long long solve(long long val);

int main() {
    f >> n >> p >> u;

    for(int i = 1 ; i <= n ; ++i) {
        f >> v[i];
    }
    g << solve(u) - solve(p - 1);
    return 0;
}

long long solve(long long val) {
    long long ans = 0 , nr = 1;

    if(val == 0) {
        return 0;
    }

    c.clear();

    for(int i = 1 ; i <= n ; ++i) {
        ++c[v[i]];

        while(c.size() > val) {
            --c[v[nr]];
            if(c[v[nr]] == 0) {
                c.erase(v[nr]);
            }
            ++nr;
        }

        ans = ans + (i - nr + 1);
    }

    return ans;
}