Pagini recente » Cod sursa (job #3002544) | Cod sursa (job #272335) | Cod sursa (job #611250) | Cod sursa (job #1186380) | Cod sursa (job #496132)
Cod sursa(job #496132)
#include <stdio.h>
struct hash
{
int nod;
hash *link;
}*H[1000000];
long n,a,b,m,i,x,x1,x2,sol,d[1100000],max[1100000];
void add(long x)
{
hash *p;
p=new hash;
p->nod=x;
p->link=H[x%m];
H[x%m]=p;
}
int src(long x)
{
hash *p;
p=H[x%m];
int ok=0;
while(p!=NULL)
{
if(p->nod==x)
{
ok=1;
break;
}
p=p->link;
}
return ok;
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
scanf("%ld%ld%ld",&n,&a,&b);
m=999983;
for(i=1;i<=m;i++) H[i]=NULL;
d[0]=0;
for(i=1;i<=n;i++)
{
scanf("%ld",&x);
if(src(x)==0)
{
d[i]=d[i-1]+1;
add(x);
}
else d[i]=d[i-1];
}
for(i=1;i<=n;i++)
if(max[d[i]]<i) max[d[i]]=i;
sol=0;
for(i=1;i<=n;i++)
{
x=d[n]-d[i]+1;
if(x<a) break;
x1=max[a+d[i]-1];
x2=max[b+d[i]-1];
sol+=x2-x1+1;
}
printf("%ld\n",sol);
return 0;
}