Pagini recente » Cod sursa (job #2541229) | Cod sursa (job #612386) | Cod sursa (job #2670784) | Cod sursa (job #2216986) | Cod sursa (job #2735376)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
const int NMAX((1 << 20) + 5);
int v[NMAX], n, l, u;
long long nrSecv(int lim)
{
if(lim == 0)
return 0;
unordered_map<int, int> mp;
int p1 = 1, p2 = 1;
long long rez = 1;
mp[v[p1]] = 1;
int nrD = 1;
while(p2 < n)
{
++p2;
if(mp.find(v[p2]) == mp.end())
++nrD;
mp[v[p2]]++;
if(nrD <= lim)
rez += p2 - p1 + 1;
else
{
while(nrD > lim)
{
if(mp[v[p1]] == 1)
--nrD;
--mp[v[p1]];
++p1;
}
rez += p2 - p1 + 1;
}
}
return rez;
}
int main()
{
fin >> n >> l >> u;
for(int i = 1; i <= n; ++i)
fin >> v[i];
fout << nrSecv(u) - nrSecv(l - 1) << '\n';
return 0;
}