Cod sursa(job #9690)

Utilizator lucibitLucian Onea lucibit Data 27 ianuarie 2007 16:42:32
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Unirea 2007, clasele 11-12 Marime 0.73 kb
#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;}