Cod sursa(job #3314021)

Utilizator MihaiDraghiciMIHAI DRAGHICI MihaiDraghici Data 7 octombrie 2025 19:24:31
Problema Divk Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;

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

vector<long long> v(500000+1);
vector<long long> sp(500000+1);
vector<int> frecv(500000*2+1);


int main() {
	ios::sync_with_stdio(false);
	fin.tie(0);

	int n, k, a, b;
	fin >> n >> k >> a >> b;

	for (int i = 1; i <= n; i++) {
		fin >> v[i];
	}

	sp[0] = 0;
	for (int i = 1; i <= n; i++) {
		long long s = (long long)sp[i-1] + v[i];
		sp[i] = int(s % k);
	}

	long long ans = 0;
	for (int i = 1; i <= n; i++) {
		int j1 = i - a;
		if (j1 >= 0) {
			frecv[sp[j1]]++;
		}

		int j2 = i - b - 1;
		if (j2 >= 0) {
			frecv[sp[j2]]--;
		}
		ans += frecv[sp[i]];
	}

	fout << ans << '\n';

	return 0;
}