Pagini recente » Cod sursa (job #197344) | Cod sursa (job #2441728) | Cod sursa (job #814140) | Cod sursa (job #494495) | Cod sursa (job #1714041)
#include <bits/stdc++.h>
using namespace std;
constexpr int MAX_N = 1 << 20;
array<unsigned int, MAX_N> A;
int N, L, U;
long long countDistinct(int NR)
{
unordered_map<unsigned int,int> Map;
Map.reserve(4096);
Map.max_load_factor(0.5);
int j = 0;
long long answer = 0;
for (int i = 0; i < N; ++i)
{
++Map[ A[i] ];
while (static_cast<int>(Map.size()) > NR)
{
--Map[ A[j] ];
if (Map[ A[j] ] == 0)
Map.erase(A[j]);
j++;
}
answer += i - j + 1;
}
return answer;
}
int main()
{
ifstream in("secv5.in");
ofstream out("secv5.out");
in >> N >> L >> U;
for (int i = 0; i < N; ++i)
in >> A[i];
out << countDistinct(U) - countDistinct(L - 1) << endl;
return 0;
}