Cod sursa(job #1476416)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 25 august 2015 09:02:29
Problema Divk Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#include <vector>
#define MAX 500005
#define MAX2 100005
using namespace std;

int n, i, j, k, x, a, b, K, s[MAX];
long long sol;
vector<int> l[MAX2];

int main(){
	freopen("divk.in", "r", stdin);
	freopen("divk.out", "w", stdout);
	scanf("%d%d%d%d", &n, &K, &a, &b);
	for(i = 1; i <= n; i++){
		scanf("%d", &x);
		s[i] = (s[i - 1] + x) % K;
		l[s[i]].push_back(i);
	}
	for(i = 0; i < l[0].size(); i++)
		if(l[0][i] >= a && l[0][i] <= b)
			sol++;
	for(i = 0; i < K; i++)
		if(l[i].size() > 1)
			for(j = 0; j < l[i].size() - 1; j++)
				for(k = j + 1; k < l[i].size(); k++)
					if(l[i][k] - l[i][j] >= a && l[i][k] - l[i][j] <= b)
						sol++;
	printf("%lld\n", sol);
	return 0;
}