Pagini recente » Istoria paginii utilizator/adelalugoj | votare | Diferente pentru utilizator/anna_bozianu intre reviziile 8 si 15 | Cod sursa (job #2697224) | Cod sursa (job #3695)
Cod sursa(job #3695)
#include <stdio.h>
#define INF "divk.in"
#define OUF "divk.out"
#define NMAX 500001
unsigned long a[NMAX],li,ls,n,k,sum;
FILE *in,*out;
int main()
{
unsigned long s,i,j,t,f;
char bit[NMAX];
unsigned long long nr;
in=fopen(INF,"r");
out=fopen(OUF,"w");
fscanf(in,"%ld%ld%ld%ld",&n,&k,&li,&ls);
for(i=1;i<=n;i++)
{
fscanf(in,"%ld",(a+i));
if(a[i]%k==0) bit[i]='t';
else bit[i]='f';
}
sum=0;nr=0;bit[0]='f';
for(i=1;i<li;i++)
if(bit[i]=='f') sum+=a[i];
for(i=li;i<=n;i++)
{
f=i+ls-li;
sum=sum+a[i]-a[i-li];
s=sum;
if(f>n) f=n;
if(s%k==0&&s>0) nr++;
for(j=i+1;j<=f;j++)
{
if(bit[j]=='f') s+=a[j];
if(s%k==0&&s>0) nr++;
}
}
fprintf(out,"%lld",nr);
fclose(in);fclose(out);
}