Pagini recente » Cod sursa (job #94152) | Cod sursa (job #1029671) | Cod sursa (job #2690044) | Cod sursa (job #1273198) | Cod sursa (job #17294)
Cod sursa(job #17294)
#include<stdio.h>
long long int *v,n,l,u,*s,nr1;
int ok,m,nr;
/*long long verif(long long int x,long long int y)
{long long int nr=0,i;
for(i=x;i<=y;i++) if(v[s[i]]==0)
{nr++;v[s[i]]=1;if(nr>u){for(int i1=1;i1<=n;i1++) v[s[i1]]=0; return 0;}}
if(nr<l) {for(i=1;i<=n;i++) v[s[i]]=0;return 0;}
for(i=1;i<=n;i++) v[s[i]]=0;
return nr;}*/
int main()
{
FILE *f,*g;
f=fopen("secv5.in","r");
g=fopen("secv5.out","w");
fscanf(f,"%lld%lld%lld",&n,&l,&u);
long long int i,j;
for(i=1;i<=n;i++) fscanf(f,"%lld",&s[i]);
v=new long long int[n+2];
s=new long long int[n+2];
for(i=1;i<=n-l+1;i++)
{j=i+l-1;nr=0;ok=1;nr=0;
for(m=i;m<=j;m++) if(v[s[m]]==0)
{nr++;v[s[m]]=1;if(nr>u){for(int m1=1;m1<=n;m1++) v[s[m1]]=0; ok=0;}}
if(nr<l) {for(m=1;m<=n;m++) v[s[m]]=0;ok=0;}
for(m=1;m<=n;m++) v[s[m]]=0;}
while(ok==0&&j<n+4){ok=1;
for(m=i;m<=j;m++) if(v[s[m]]==0)
{nr++;v[s[m]]=1;if(nr>u){for(int m1=1;m1<=n;m1++) v[s[m1]]=0; ok=0;}}
if(nr<l) {for(m=1;m<=n;m++) v[s[m]]=0;ok=0;}
for(m=1;m<=n;m++) v[s[m]]=0;}
j++;}
if(j<=n)
{nr1++;
long long int nr=0,i1;
for(i1=i;i1<=j;i1++) if(v[s[i1]]==0)
{nr++;v[s[i1]]=1;} else v[s[i1]]++;
j++;
while(j<=n)
{if(v[s[j]]==0) {nr++;v[s[j]]=1;}
if(nr<=u&&nr>=l) { nr1++;}
j++;}
for(i1=1;i1<=n;i1++) v[s[i1]]=0;
}}
fprintf(g,"%lld",nr1);
fclose(f);fclose(g);return 0;}