Cod sursa(job #972710)

Utilizator cont_de_testeCont Teste cont_de_teste Data 12 iulie 2013 14:54:03
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <iostream>
#include <fstream>
using namespace std;

#ifdef INFOARENA
	ifstream fin("divk.in");
	#define cin fin
	ofstream fout("divk.out");
	#define cout fout
#endif

const int NMax = 500100;
const int KMax = 100100;
int N, A, B, K;
long long solution;
int V[NMax], sum[NMax];
int nra[KMax];

void read(), solve(), write();


int main() {
	read(); solve(); write();
}


void read() {
	cin >> N >> K >> A >> B;
	for (int i = 1; i <= N; i++)
		cin >> V[i], sum[i] = (sum[i - 1] + V[i]) % K;
}

void solve() {
	for (int i = 1; i <= N; i++) {
		if (i - A >= 0)
			nra[sum[i - A]]++;
		solution = solution + nra[sum[i]];
		if (i - B >= 0)
			nra[sum[i - B]]--;
	}
}

void write() {
	cout << solution << '\n';
}