Pagini recente » Cod sursa (job #2792013) | Cod sursa (job #2959065) | Cod sursa (job #1614810) | Cod sursa (job #2885039) | Cod sursa (job #1413513)
#include <map>
#include <cstdio>
using namespace std;
const int MAX_N = (1 << 20) + 2;
int N, L, U;
unsigned v[MAX_N];
map < unsigned, int > M;
long long solve(int l) {
long long ret = 0;
M.clear();
for(int i = 1, j = 0, cnt = 0; i <= N; ++i) {
while(j < N) {
if(M[v[j + 1]] == 0 && cnt == l) {
break;
}
++j;
if(M[v[j]] == 0) {
++cnt;
}
++M[v[j]];
ret += j - i + 1;
}
--M[v[i]];
if(M[v[i]] == 0) {
--cnt;
}
}
return ret;
}
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("%ud", &v[i]);
}
printf("%lld\n", solve(U) - solve(L - 1));
return 0;
}