Pagini recente » Cod sursa (job #987472) | Cod sursa (job #3352871) | Cod sursa (job #165474) | Cod sursa (job #516642) | Cod sursa (job #3352576)
// https://www.infoarena.ro/problema/secv5
#include <fstream>
#include <unordered_map>
#define MAXSZ (1 << 20)
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
unsigned int a[MAXSZ];
long long count_at_most(int n, int k) {
if (k < 0)
return 0;
unordered_map<unsigned int, int> freq;
long long ans = 0;
int distinct = 0;
int l = 0;
for (int r = 0; r < n; r++) {
if (freq[a[r]]++ == 0)
distinct++;
while (distinct > k) {
if (--freq[a[l]] == 0)
distinct--;
l++;
}
ans += r - l + 1;
}
return ans;
}
int main() {
int n, l, u;
fin >> n >> l >> u;
for (int i = 0; i < n; i++)
fin >> a[i];
fout << count_at_most(n, u) - count_at_most(n, l - 1) << '\n';
return 0;
}