Pagini recente » Cod sursa (job #3254034) | Cod sursa (job #3221046) | Cod sursa (job #2906689) | Cod sursa (job #1467107) | Cod sursa (job #2848955)
#include <bits/stdc++.h>
#define nmax 1005000
#define int long long
using namespace std;
int v[nmax + 1], c[nmax + 1];
map<int, int> f;
signed main()
{
ifstream cin("secv5.in");
ofstream cout("secv5.out");
int n, l, u, p = 0, a, i, st, dr, s = 0, cnt = 0;
cin >> n >> l >> u;
for (i = 1; i <= n; i++)
{
cin >> a;
if (a == v[p])
c[p]++;
else
++p, v[p] = a, c[p] = 1;
}
n = p;
// for (i = 1; i <= n; i++)
// cout << v[i] << " " << c[i] << endl;
for (i = 1; i <= n && f.size() < l; i++)
f[v[i]]++, s += c[i];
st = 1, dr = i;
while (st <= n)
{
while (dr <= n && f.size() < u)
f[v[dr]]++, s += c[dr], dr++;
// cout << st << " " << dr << " " << f.size() << endl;
if (f.size() <= u && f.size() >= l)
cnt += max((s - c[st]), 1LL) * c[st];
s -= c[st], f.erase(v[st]), st++;
}
cout << cnt;
return 0;
}