Pagini recente » Cod sursa (job #214981) | Cod sursa (job #1761148) | Cod sursa (job #3163145) | Cod sursa (job #2280663) | Cod sursa (job #2145114)
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
int n,l,u,i,nr,j;
long long ans;
int v[1100000],prez[1100000];
pair <long long,int> a[1100000];
int main()
{
fin>>n>>l>>u;
for(i=1;i<=n;i++)
{
fin>>a[i].f;
a[i].s=i;
}
sort(a+1,a+n+1);
for(i=1;i<=n;i++)
{
if(a[i].f!=a[i-1].f)
nr++;
v[a[i].s]=nr;
}
nr=0;j=1;
for(i=1;i<=n;i++)
{
if(!prez[v[i]])nr++;
prez[v[i]]++;
while(nr>u)
if(!--prez[v[j++]])nr--;
ans+=(i-j+1);
}
nr=0;j=1;
memset(prez,0,sizeof(prez));
for(i=1;i<=n;i++)
{
if(!prez[v[i]])nr++;
prez[v[i]]++;
while(nr>=l)
if(!--prez[v[j++]])nr--;
ans-=(i-j+1);
}
fout<<ans;
return 0;
}