Cod sursa(job #1895939)

Utilizator cristicretancristi cretan cristicretan Data 28 februarie 2017 12:26:00
Problema Secventa 5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>
#define NMax (1<<20 + 2)
#define mod 666013
#define ui unsigned int
using namespace std;

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

ui n,l,u,first,ans;
ui a[NMax];

long long Count(ui l)
{
    unordered_map<ui, ui> H;
    first = 1;
    long long ans = 0;
    for(int i = 1; i <= n; ++i)
    {
        H[a[i]]++;
        while(H.size() > l)
        {
            H[a[first]]--;
            if(H[a[first]] == 0) H.erase(a[first]);
            first++;
        }
        ans += 1LL * (i - first + 1);
    }
    return ans;
}
int main()
{
    f >> n >> l >> u;
    for(int i = 1; i <= n; ++i)
        f >> a[i];
    g << Count(u) - Count(l - 1) << '\n';
    return 0;
}