Pagini recente » Cod sursa (job #130848) | Cod sursa (job #2337845) | Cod sursa (job #911035) | Cod sursa (job #1084034) | Cod sursa (job #2039010)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("secv5.in");
ofstream fout ("secv5.out");
unsigned int a[1024*1024 + 20];
int n, L, U;
void Citire()
{
int i;
fin >> n >> L >> U;
for (i=1; i<=n; i++)
fin >> a[i];
}
/// cate secventa au cel mult k valori distincte
long long NrSecvente(int K)
{
unordered_map <unsigned, int> m;
unsigned i, j, x;
long long cnt=0;
i=1;
for (j=1; j<=n; j++)
{
m[a[j]]++;
while (m.size()>K)
{
x=a[i];
m[x]--;
if (m[x]==0) m.erase(x);
i++;
}
cnt+=(j-i+1);
/// adaug cele (j-i+1) secv care se termina cu a[j]
}
return cnt;
}
int main()
{
Citire();
fout << (NrSecvente(U)-NrSecvente(L-1)) << "\n";
return 0;
}