Pagini recente » Cod sursa (job #2893333) | Cod sursa (job #2563396) | Cod sursa (job #682672) | Cod sursa (job #766668) | Cod sursa (job #88146)
Cod sursa(job #88146)
#include<stdio.h>
long int N,L,U,i,x[1050000],a,b,c,cc,bb,f1[1050000],f2[1050000],sol;
int main()
{
FILE *f,*g;f=fopen("secv5.in","r");g=fopen("secv5.out","w");
fscanf(f,"%ld%ld%ld",&N,&L,&U);
for(i=1;i<=N;i++)fscanf(f,"%ld",&x[i]);
while(bb<L&&b<=N)
{ b++;
if(b==N+1) { fprintf(g,"%ld\n",sol);fcloseall();return 0;}
f1[x[b]]++;if(f1[x[b]]==1)bb++;
f2[x[b]]=f1[x[b]];
}
c=b;cc=bb;
while(cc<=U&&c<=N)
{ c++;
if(c==N+1) cc=U;
else { f2[x[c]]++;if(f2[x[c]]==1)cc++;}
}
for(;;)
{
sol+=c-b;
a++;
f1[x[a]]--;
if(f1[x[a]]==0) bb--;
f2[x[a]]--;
if(f2[x[a]]==0) cc--;
while(bb<L&&b<=N)
{ b++;
if(b==N+1) { fprintf(g,"%ld\n",sol);fcloseall();return 0;}
f1[x[b]]++;if(f1[x[b]]==1)bb++;
}
while(cc<=U&&c<=N)
{ c++;
if(c==N+1) cc=U;
else { f2[x[c]]++;if(f2[x[c]]==1)cc++;}
}
}
}