Cod sursa(job #333245)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 21 iulie 2009 20:34:32
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>

FILE *in, *out;

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

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]++;                  
		
		if(i==b-a+1)
		{	
			v[0]--;
			
			if(v[0]<0)
				v[0]=0;
		}
		
		if(i+a<=n)
			rez+=v[s[i+a]%k];
	}	
	

	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;
}