Pagini recente » Cod sursa (job #3126898) | Cod sursa (job #614145) | Cod sursa (job #2969370) | Cod sursa (job #1068585) | Cod sursa (job #28987)
Cod sursa(job #28987)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <map>
using namespace std;
#define nmax 1050000
long long l,u,n,i,j,a[nmax],nr,low[nmax];
long long rr;
map<long long,long long> h;
long long solve(long long x)
{
i=nr=0;
for (j=0;j<n;j++)
{
if (h[a[j]]==0)
++nr;
h[a[j]]++;
while (nr>x)
{
if (h[a[i]]==1)
--nr;
h[a[i]]--;
i++;
}
low[j]=i;
}
for (;i<n;i++)
h[a[i]]--;
rr=0;
for (i=0;i<n;i++)
rr+=i-low[i]+1;
return rr;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%lld%lld%lld",&n,&l,&u);
for (i=0;i<n;i++)
scanf("%lld",a+i);
printf("%lld\n",solve(u)-solve(l-1));
return 0;
}