Nu aveti permisiuni pentru a descarca fisierul grader_eval.cpp
Cod sursa(job #9690)
| Utilizator | 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;}
