Pagini recente » Cod sursa (job #1780613) | Cod sursa (job #2195924) | Cod sursa (job #2360487) | Cod sursa (job #1083572) | Cod sursa (job #9690)
Cod sursa(job #9690)
#include<stdio.h>
#define maxN 1048576
long int n,l,u,viz[maxN],a[maxN];
int main ()
{long int i;
freopen ("secv5.in","r",stdin);
scanf("%ld %ld %ld\n",&n,&l,&u);
for(i=1;i<=n;i++) scanf("%ld\n",&a[i]);
long int p,q,nrD,NR;
p=1; q=l;
nrD=0;
for(i=1;i<=l; i++) {if(!viz[a[i]]) nrD++;
viz[a[i]]++;}
NR=0;
do
{ if((l<=nrD)&&(nrD<=u)) NR++;
while((nrD<=u)&&(q<n)){ q++;
if(!viz[a[q]]) nrD++;
viz[a[q]]++;
if((l<=nrD)&&(nrD<=u)) NR++;
}
do {
viz[a[q]]--;
if(!viz[a[q]]) nrD--;
q--; }
while (q>p+l);
viz[a[p]]--;
if(!viz[a[p]]) nrD--;
p++;
} while (p<=(n-l)) ;
freopen ("secv5.out","w",stdout);
printf("%ld\n",NR);
return 0;}