Cod sursa(job #1838099)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 31 decembrie 2016 00:08:39
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#include <unordered_map>
#define MAXN (1<<21)

using namespace std;

int n, L, U;
int a[MAXN];
long long sol;
unordered_map<int, int> mic, mare;

long long tot(unordered_map<int, int> &m, int ma)
{
    int sz = 0, ind = 1;
    long long part = 0;
    for (int i = 1; i <= n; i++)
	{
		m[a[i]]++;
        if (m[a[i]] == 1) sz++;
        while (sz > ma)
		{
            m[a[ind]]--;
            if (m[a[ind++]] == 0)
                sz--;
		}
		part += i-ind+1;
	}
	return part;
}

void solve()
{
	sol = tot(mare, U) - tot(mic, L-1);
}

int main()
{
    freopen("secv5.in", "r", stdin);
    freopen("secv5.out", "w", stdout);

    scanf("%d %d %d", &n, &L, &U);
    for (int i = 1; i <= n; i++)
		scanf("%d ", &a[i]);
	solve();
	printf("%lld", sol);

    return 0;
}