Cod sursa(job #465630)

Utilizator aladinaladin aladinn aladin Data 25 iunie 2010 09:57:35
Problema Divk Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <cstdio>
int v[10004],dr[100004],st[100004],s[500004];
int main()
{
	int n,a,b,k,i,j,x,nr=0;
	freopen("divk.in","r",stdin);
	freopen("divk.out","w",stdout);
	scanf("%d %d %d %d",&n,&k,&a,&b);
	v[0]=1;dr[0]=1;
	for (i=1;i<=n;++i)
	{
		scanf("%d",&s[i]);
		s[i]=(s[i]+s[i-1])%k;
		while (st[s[i]]<i-b)
		{
			if (s[st[s[i]]]==s[i]) --v[s[i]];
			++st[s[i]];
		}
		while (dr[s[i]]<=i-a)
		{
			if (s[dr[s[i]]]==s[i]) ++v[s[i]];
			++dr[s[i]];
		}
		nr+=v[s[i]];
	}
	printf("%d",nr);
	return 0;}