Cod sursa(job #1072727)

Utilizator xaphariusMihai Suteu xapharius Data 4 ianuarie 2014 19:59:30
Problema Divk Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
using namespace std;

#define MAXN  5000

int N, K, A, B;
int num[MAXN+1];
//num * lungime subsecv
long long sums[MAXN+1][MAXN+1];

int main(){
	freopen("divk.in", "r", stdin);
	freopen("divk.out", "w", stdout);

	scanf("%d%d%d%d", &N, &K, &A, &B);
	for(int i = 1; i <= N; ++i)
		scanf("%d", &num[i]);

	//pt fiecare num construieste suma fiecarei subsecv care se termina in num.
	for(int i = 1; i <= N; ++i)
		for(int j = 1; j <= i; ++j)
			sums[i][j] = sums[i-1][j-1] + num[i]; 

	//numara care sume sunt div cu K din intervalul de lungine [A,B]
	long long nrSubSecv = 0;
	for(int i = 1; i <= N; ++i)
		for(int j = A; j <= B; ++j)
			if(sums[i][j] != 0 && sums[i][j] % K == 0) ++nrSubSecv;

	printf("%lld", nrSubSecv);

	fclose(stdin);
	fclose(stdout);
}