Cod sursa(job #3329459)

Utilizator octavP18Podan Octvavin octavP18 Data 13 decembrie 2025 11:54:21
Problema Divk Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>

#include <fstream>

#include <algorithm>

#include <vector>

#include <cmath>

#include <stack>

#include <string>

using namespace std;

ifstream fin("i.in");
ofstream fout("i.out");

int n, x[500005];
int s[500005];
int fr[100005];
int k, a, b;
int ans, siz;

int main()
{
	cin >> n;
	cin >> k >> a >> b;
	for (int i = 1; i <= n; ++i) {
		cin >> x[i];
		x[i] = x[i] % k;
		s[i] = (s[i - 1] + x[i]) % k;
		if (s[i] == 0 and i <= b) ++ans;
		if (i <= a) fr[s[i]]++, ++siz;
	}
	for (int i = a * 2; i <= n; ++i) {
		ans += fr[s[i]];
		if (siz < b) {
			fr[s[i - a + 1]]++;
			++siz;
		}
		if (siz == b) {
			fr[s[i - a + 1]]++;
			fr[s[i - b - a + 1]]--;
		}
	}
	cout << ans << " ";


}