Pagini recente » Cod sursa (job #2802915) | Cod sursa (job #100645) | Cod sursa (job #1408476) | Cod sursa (job #1190492) | Cod sursa (job #3151927)
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ld long double
#define pii pair<int, int>
#define pll pair<ll, ll
#define pb push_back
#define eb emplace_back
using namespace std;
signed main() {
#ifndef TEST
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
#endif
ios_base :: sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, k, a, b;
cin >> n >> k >> a >> b;
vector<int> v(n + 1);
for (int i = 1; i <= n; i++)
cin >> v[i];
vector<int> sums(n + 1);
for (int i = 1; i <= n; i++)
sums[i] = (sums[i - 1] + v[i]) % k;
vector<int> cnt(k);
ll ans = 0;
for (int i = 1; i <= n; i++) {
/// vreau sa pastrez doar cele la lungime a si sa sterg pe alea la lungime b + 1
if (i >= a)
cnt[sums[i - a]]++;
ans += cnt[sums[i]];
if (i >= b)
cnt[sums[i - b]]--;
}
cout << ans;
return 0;
}