Cod sursa(job #483066)

Utilizator crushackPopescu Silviu crushack Data 6 septembrie 2010 20:33:24
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#define NMax 5000000
#define KMax 1000000

const char IN[]   ="divk.in";
const char OUT[]  ="divk.out";

int start,end,N,K,A,B;
int a[NMax];
int d[KMax];


int main()
{
	int i,s,Rez;
	freopen(IN,"r",stdin);
	freopen(OUT,"w",stdout);
	scanf("%d%d%d%d",&N,&K,&A,&B);
	start=0;end=-1;
	s=Rez=0;
	for (i=0;i<N;i++)
	{
		if (i>=B-A)
		{
			d[a[start]%K]--;
			if (!(a[start]%K))
				s--;
			else if (d[a[start]%K]%2)
				s--;
			start++;
		}
		
		end++;
		scanf("%d",a+end);
			a[end]+= (end) ? a[end-1] : 0;
		d[a[end]%K]++;
		if (!(a[end]%K))
			s++;
		else
			s+= (d[a[end]%K]+1)%2;
		
		Rez+=s;
	}
	
	printf("%d\n",Rez);
	fclose(stdin);
	fclose(stdout);
	return 0;
}