Pagini recente » Cod sursa (job #1840520) | Cod sursa (job #2393104) | Cod sursa (job #1184075) | Cod sursa (job #3123687) | Cod sursa (job #2038982)
#include <bits/stdc++.h>
using namespace std;
unsigned a[1024 * 1024 + 20], n;
int L, U;
ifstream fin ("secv5.in");
ofstream fout ("secv5.out");
void Citire()
{
fin >> n >> L >> U;
for(int i = 1; i <= n; i++)
fin >> a[i];
}
/// Cate secvente au cel mult k - valori distincte
long long NrSecvente(int k)
{
unordered_map <unsigned, int> M;
int i, j, x;
long long contor = 0;
i = 1;
for(j = 1; j <= n; j++)
{
M[a[j]]++;
while (M.size() > k)
{
x = a[i];
i++;
M[x]--;
if (M[x] == 0) M.erase(x);
}
/// Adaug cele j - i + 1 secvente ce se term. cu a[j];
contor += (j - i + 1);
}
return contor;
}
int main()
{
Citire();
fout << NrSecvente(U) - NrSecvente(L - 1);
return 0;
}