Pagini recente » Cod sursa (job #1404378) | Cod sursa (job #545763) | Cod sursa (job #394243) | Cod sursa (job #1331494) | Cod sursa (job #972710)
Cod sursa(job #972710)
#include <iostream>
#include <fstream>
using namespace std;
#ifdef INFOARENA
ifstream fin("divk.in");
#define cin fin
ofstream fout("divk.out");
#define cout fout
#endif
const int NMax = 500100;
const int KMax = 100100;
int N, A, B, K;
long long solution;
int V[NMax], sum[NMax];
int nra[KMax];
void read(), solve(), write();
int main() {
read(); solve(); write();
}
void read() {
cin >> N >> K >> A >> B;
for (int i = 1; i <= N; i++)
cin >> V[i], sum[i] = (sum[i - 1] + V[i]) % K;
}
void solve() {
for (int i = 1; i <= N; i++) {
if (i - A >= 0)
nra[sum[i - A]]++;
solution = solution + nra[sum[i]];
if (i - B >= 0)
nra[sum[i - B]]--;
}
}
void write() {
cout << solution << '\n';
}