Pagini recente » Cod sursa (job #2078685) | Cod sursa (job #203052) | Cod sursa (job #1872024) | Cod sursa (job #1585895) | Cod sursa (job #1786864)
#include <iostream>
#include<cstdio>
#define MOD 100000007
using namespace std;
int h[MOD+5],n,a,b,i,x,v[1000010],nr,vf[1000000],L[1000010];
inline int normalizare(int x)
{
if(!h[x%MOD])
{
nr++;
h[x%MOD]=nr;
//vf[nr]++;
x=nr;
}
else
{
// vf[h[x%MOD]]++;
x=h[x%MOD];
}
return x;
}
inline int procedura(int a)
{
for(i=1;i<=n;i++)
vf[v[i]]=L[i]=0;
L[1]=1;
vf[v[1]]++;
int nr=1,i,sum=0;
for(i=2;i<=n;i++)
{
vf[v[i]]++;
if(vf[v[i]]==1)
{
nr++;
if(nr>a)
{
L[i]=L[i-1]+vf[v[L[i-1]]];
nr--;
vf[v[L[i-1]]]=0;
}
else
L[i]=L[i-1];
}
else
{
L[i]=L[i-1];
}
}
for(i=1;i<=n;i++)
sum=sum+(i-L[i]+1);
return sum;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
cin>>n>>a>>b;
for(i=1;i<=n;i++)
{
cin>>x;
v[i]=normalizare(x);
}
cout<<procedura(b)-procedura(a-1);
}