Pagini recente » Cod sursa (job #98082) | Cod sursa (job #238378) | Rezultatele filtrării | Cod sursa (job #2627886) | Cod sursa (job #2038999)
#include <bits/stdc++.h>
using namespace std;
unsigned long long a[1024 * 1024 + 20], n, L, U;
///cate secvente au cel mult k valori distincte
unsigned long long NrSecvente(unsigned int K)
{
unordered_map <unsigned, int> m;
long long cnt = 0, j = 1, x;
for(int i = 1; i <= n; i++)
{
m[a[i]]++;
while(m.size() > K)
{
x = a[j];
j++;
m[x]--;
if(m[x]==0) m.erase(x);
}
cnt += (i - j + 1);
}
return cnt;
}
int main()
{
ifstream fin("secv5.in");
fin >> n >> L >> U;
for(int i = 1; i <= n; i++)
fin >> a[i];
ofstream fout("secv5.out");
fout << NrSecvente(U) - NrSecvente(L - 1) << "\n";
return 0;
}