Cod sursa(job #791347)

Utilizator gener.omerGener Omer gener.omer Data 23 septembrie 2012 20:53:34
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <fstream>

using namespace std;

#define NMAX 500005

int N, K, A, B, X[NMAX];
long long sum[NMAX];


void precompute()
{
	sum[0] = 0;
	sum[1] = X[1];
	for(int i = 1; i <= N; ++i)
		sum[i] = sum[i-1] + X[i];
}

long long solve(int n)
{
	long long nr = 0;
	
	for(int i = 1; i <= n; ++i)
	{
		for(int j = 1; (j + i - 1) <= n; ++j)
		{
			long long s = sum[j + i - 1] - sum[j - 1];
			if(s % K == 0)
				++nr;
		}
	}
	
	return nr;
}

int main()
{
	ifstream in("divk.in");
	ofstream out("divk.out");
	in >> N >> K >> A >> B;
	for(int i = 1; i <= N; ++i)
		in >> X[i];
	precompute();
	out << solve(N) - solve(K - 1);
	return 0;
}