Cod sursa(job #495450)

Utilizator loginLogin Iustin Anca login Data 25 octombrie 2010 12:34:55
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
# include <fstream>
# include <iostream>
# define DIM 500003
using namespace std;
int n, a, b, k, v[DIM], s[DIM];
long long sol, nk[DIM];

void read ()
{
	long long x;
	ifstream fin ("divk.in");
	fin>>n>>k>>a>>b;
	for(int i=1;i<=n;++i)
	{
		fin>>x;
		v[i]=x%k;
	}
}

void solve ()
{
	for(int i=1;i<=a;++i)
		s[i]=(s[i-1]+v[i])%k;
	if (s[a]==0)++sol;
	nk[0]=1;
	for(int i=a+1;i<=b;++i)			
	{
		s[i]=(s[i-1]+v[i])%k;
		++nk[s[i-a]];
		sol+=nk[s[i]];
	}
	for(int i=b+1;i<=n;++i)
	{
		s[i]=(s[i-1]+v[i])%k;
		++nk[s[i-a]];
		--nk[s[i-b-1]];
		sol+=nk[s[i]];
	}
}
		
int main ()
{
	read ();
	solve ();
	ofstream fout ("divk.out");
	fout<<sol;
	return 0;
}