Pagini recente » Cod sursa (job #1888528) | Cod sursa (job #1435037) | Cod sursa (job #1002694) | Cod sursa (job #1964872) | Cod sursa (job #2848953)
#include <bits/stdc++.h>
#define nmax 1005000
using namespace std;
int v[nmax + 1], c[nmax + 1];
map<int, int> f;
int 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 && 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++;
if (f.size() <= u && f.size() >= l)
cnt += max((s - c[st]), 1) * c[st];
s -= c[st], f.erase(v[st]), st++;
}
cout << cnt;
return 0;
}