Pagini recente » Borderou de evaluare (job #297711) | Cod sursa (job #3275695) | Cod sursa (job #1513946) | Profil RaresH | Cod sursa (job #3325177)
#include <bits/stdc++.h>
using namespace std;
int main() {
int N, L, U;
cin >> N >> L >> U;
vector<long long> a(N);
for (int i = 0; i < N; i++)
cin >> a[i];
long long ansU = 0, ansL = 0;
{
unordered_map<long long,int> freq;
int left = 0, distinct = 0;
for (int right = 0; right < N; right++) {
if (++freq[a[right]] == 1)
distinct++;
while (distinct > U) {
if (--freq[a[left]] == 0)
distinct--;
left++;
}
ansU += (right - left + 1);
}
}
{
int K = L - 1;
unordered_map<long long,int> freq;
int left = 0, distinct = 0;
for (int right = 0; right < N; right++) {
if (++freq[a[right]] == 1)
distinct++;
while (distinct > K) {
if (--freq[a[left]] == 0)
distinct--;
left++;
}
ansL += (right - left + 1);
}
}
cout << ansU - ansL;
return 0;
}