Cod sursa(job #612409)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 7 septembrie 2011 14:54:31
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>

const int DIMN = 500005, DIMK = 100005;
int V[DIMN], R[DIMK], N, K, Lmin, Lmax;
long long C;

void cit ()
{
	freopen ("divk.in", "r", stdin);
	freopen ("divk.out", "w", stdout);
	
	scanf ("%d%d%d%d", &N, &K, &Lmin, &Lmax);
	for (int i = 1, x; i <= N; i++)
	{
		scanf ("%d", &x);
		V[i] = (V[i-1] + x) % K;
	}
}

void rez ()
{
	for (int i = Lmin; i <= N; i++)
	{
		R[V[i - Lmin]]++;
		if (i > Lmax)
			R[V[i - Lmax - 1]]--;
		C += R[V[i]];
	}
	
	printf ("%lld", C);
}

int main ()
{
	cit ();
	rez ();
	
	return 0;
}