Pagini recente » Cod sursa (job #293721) | Arbnr | Profil AndreiCozma | Profil Bodo171 | Cod sursa (job #3940)
Cod sursa(job #3940)
#include <stdio.h>
#define INF "divk.in"
#define OUF "divk.out"
#define NMAX 500001
#define RMAX 131072
int main()
{
unsigned long t,a[NMAX],r[RMAX]={0},li,ls,n;
register unsigned long i,f,k;
unsigned long long nr=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<=n;i++)
{
fscanf(in,"%ld",&f);
a[i]=(a[i-1]+f)%k;
}
//for(i=1;i<=n;i++) fprintf(out,"%ld ",a[i]);
//fprintf(out,"\n");
for(i=1;i<=n;i++)
{
nr+=r[a[i]];
if(i>=ls) r[a[i-ls+1]]--;
if(i-li+1<n) r[a[i-li+2]]++;
//for(t=0;t<8;t++) fprintf(out,"%ld ",r[t]);
//fprintf(out,"%lld\n",nr);
}
fprintf(out,"%lld",nr);
fclose(in);fclose(out);
}