Pagini recente » Cod sursa (job #956845) | Cod sursa (job #2189714) | Cod sursa (job #1031887) | Cod sursa (job #2045056) | Cod sursa (job #1762571)
//nohash
#include <bits/stdc++.h>
#define maxN (1<<20)+5
using namespace std;
long long st,dr,mij,cnt,fr[maxN];
long long n,l,u,i,j,v[maxN],w[maxN];
void normalize()
{
for(i=1;i<=n;i++)
w[i]=v[i];
sort(w+1,w+n+1);
for(i=1;i<=n;i++)
{
st=1,dr=n;
while(st<=dr)
{
mij=st+(dr-st)/2;
if(w[mij]==v[i])
{
v[i]=mij;
break;
}
if(w[mij]<v[i])
st=mij+1;
else dr=mij-1;
}
}
}
long long Count(int x)
{
if(!x)
return 0;
long long sol=0;
memset(fr,0,sizeof(fr));
for(st=1,dr=1,cnt=0;dr<=n;dr++)
{
fr[v[dr]]++;
if(fr[v[dr]]==1)
cnt++;
for(;cnt>x && st<=dr;st++)
{
fr[v[st]]--;
if(!fr[v[st]])
cnt--;
}
sol+=dr-st+1;
}
return sol;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%lld %lld %lld",&n,&l,&u);
for(i=1;i<=n;i++)
scanf("%lld",&v[i]);
normalize();
printf("%lld",Count(u)-Count(l-1));
return 0;
}