Pagini recente » Cod sursa (job #1587045) | Cod sursa (job #145894) | Cod sursa (job #1585069) | Cod sursa (job #452268) | Cod sursa (job #2561050)
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long int unll;
ofstream g("secv5.out");
unll n , l, u;
unll lef , rig, ans;
unll v[1 << 20 + 5];
unordered_map<int,int> lf, rt;
char buffer[32010];
int p = 31999;
void inc()
{
++p;
if(p == 32000)
{
p = 0;
fread(buffer, 1, 32000, stdin);
}
}
void read(unll &x)
{
while(buffer[p] < '0' || buffer[p] > '9')
inc();
x = 0;
while(buffer[p] >= '0' && buffer[p] <= '9')
{
x = x * 10 + buffer[p] - '0';
inc();
}
}
void Read()
{
freopen("secv5.in", "r", stdin);
read(n);
read(l);
read(u);
for(int i = 1;i <= n;++i)
read(v[i]);
}
void Solve()
{
lef = rig = 1;
for(int i = 1;i <= n;++i)
{
lf[v[i]]++;
rt[v[i]]++;
while(lf.size() >= l)
{
lf[v[lef]]--;
if(lf[v[lef]] == 0)
lf.erase(v[lef]);
++lef;
}
while(rt.size() > u)
{
rt[v[rig]]--;
if(rt[v[rig]] == 0)
rt.erase(v[rig]);
++rig;
}
ans += lef - rig;
}
g<<ans<<'\n';
}
int main()
{
Read();
Solve();
return 0;
}