Cod sursa(job #1814893)

Utilizator c0mradec0mrade c0mrade Data 24 noiembrie 2016 17:34:52
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");

typedef long long LL;
unsigned int n, L, U, v[1000100];
unordered_map<unsigned int, int> H;

LL solve(int x)
{
    H.clear();
    LL id = 1, ans = 0;
    for(int i=1; i<=n; ++i)
    {
        ++H[v[i]];
        while(H.size() > x)
        {
            --H[v[id]];
            if(H[v[id]] == 0)
                H.erase(v[id]);
            ++id;
        }
        ans += i-id+1;
    }
    return ans;
}

int main()
{
    fin >> n >> L >> U;
    for(int i=1; i<=n; ++i)
        fin >> v[i];
    fout << solve(U) - solve(L-1);
    return 0;
}