Cod sursa(job #726258)

Utilizator danalex97Dan H Alexandru danalex97 Data 27 martie 2012 09:19:39
Problema Divk Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <fstream>
using namespace std;

ifstream F("divk.in");
ofstream G("divk.out");

#define Nmax 500011

long N,K,A,B;
long R[Nmax];
long sol1,sol2;
long Fr[Nmax];
long Fr2[Nmax];

long solve(long A,long Fr[])
{
	long Sol=0;
	for (long i=1;i<=N;++i)
	{
		++Fr[R[i]];
		if (i-A>0)
			--Fr[R[i-A]];
		Sol+=Fr[R[i]];
	}
	return Sol;
}

int main()
{
	F>>N>>K>>A>>B;
	
	for (long i=1;i<=N;++i)
		F>>R[i],R[i]=(R[i]+R[i-1])%K;
	
	--A;
	if ( A>0 )
		sol1=solve(A,Fr);
	sol2=solve(B,Fr2);
	
	G<<sol2-sol1<<'\n';
	
	F.close();
	G.close();
	return 0;
}