Pagini recente » Cod sursa (job #184751) | Cod sursa (job #1434112) | Cod sursa (job #1815398) | Cod sursa (job #1237657) | Cod sursa (job #1700367)
#include <fstream>
#define LL long long
using namespace std;
ifstream cin("divk.in");
ofstream cout("divk.out");
const int MaxN = 500005, MaxK = 100005;
LL ModFreq[MaxK];
int v[MaxN];
LL Ans;
int n, k, A, B, CurrSum, RgSum, LfSum;
int main() {
cin >> n >> k >> A >> B;
for (int i = 1; i <= n; ++i) {
cin >> v[i];
if (i <= A) {
CurrSum += v[i];
CurrSum %= k;
}
}
ModFreq[0] = 1;
for (int i = A + 1; i <= n; ++i) {
CurrSum += v[i];
CurrSum %= k;
RgSum += v[i - A];
RgSum %= k;
if (i == B + 1) --ModFreq[0];
if (i >= B + 1) {
LfSum += v[i - B];
LfSum %= k;
--ModFreq[LfSum];
}
++ModFreq[RgSum];
Ans += ModFreq[CurrSum];
}
cout << Ans << '\n';
return 0;
}