Cod sursa(job #3696)

Utilizator megabyteBarsan Paul megabyte Data 27 decembrie 2006 20:46:11
Problema Divk Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#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);
}