Pagini recente » Cod sursa (job #1551106) | Cod sursa (job #2463085) | Cod sursa (job #2122236) | Cod sursa (job #1170972) | Cod sursa (job #14784)
Cod sursa(job #14784)
#include <stdio.h>
#define INF "divk.in"
#define OUF "divk.out"
#define NMAX 500001
#define RMAX 131072
long a[NMAX],r[NMAX]={0},li,ls,n;
int main()
{
register long i,f,k;
unsigned long long nr=0,ps=0;
FILE *in,*out;
in=fopen(INF,"r");
out=fopen(OUF,"w");
fscanf(in,"%ld %ld %ld %ld",&n,&k,&li,&ls);
a[0]=0;
for(i=1;i<=ls;i++)
{
fscanf(in,"%ld",&f);
ps+=f%k;
if(ps%k==0&&i>=li) nr++;
a[i]=(a[i-1]+f)%k;
}
for(i=ls+1;i<=n;i++)
{
fscanf(in,"%ld",&f);
a[i]=(a[i-1]+f)%k;
}
for(i=1;i<=n;i++)
{
if(i>li) r[a[i-li]]+=1;
if(i>ls+1) r[a[i-ls-1]]-=1;
nr+=r[a[i]];
}
fprintf(out,"%lld",nr);
fclose(in);fclose(out);
}