Cod sursa(job #333232)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 21 iulie 2009 19:12:37
Problema Divk Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

FILE *in, *out;

long long int n,k,a,b,i,rez,s[500005],v[1000000];

int main()
{
	in=fopen("divk.in","r");
	out=fopen("divk.out","w");
	
	fscanf(in,"%lld %lld %lld %lld\n",&n,&k,&a,&b);
	
	rez=0;
	
	for(i=1;i<=n;i++)
	{	
		fscanf(in,"%lld\n",&s[i]);
		
		s[i]+=s[i-1];
	}
	
	for(i=0;i<=b-a+1;i++)
	{
		v[s[i]%k]++;
		
		rez+=v[s[i+a]%k];
	}	
	
	v[0]--;
	
	if(v[0]<0)
		v[0]=0;
	                                                                   //1 2 3 4 5 6 7
	for(i=b-a+2;i<=n-a;i++)
	{
		v[s[i-(b-a+1)]%k]--;
		v[s[i]%k]++;
		
		rez+=v[s[i+a]%k];
	}	
	
	fprintf(out,"%lld\n",rez);
	
	fclose(out);
	
	return 0;
}