Pagini recente » Cod sursa (job #1010571) | Cod sursa (job #1697897) | Cod sursa (job #1686124) | Cod sursa (job #2210966) | Cod sursa (job #2214832)
#include <fstream>
#define MDMAX 500010
#define DPMAX 100010
std::ifstream fin("divk.in");
std::ofstream fout("divk.out");
int n, k, a, b, sol;
int md[MDMAX], dp[DPMAX];
int main() {
int val;
fin >> n >> k >> a >> b;
for (int i = 1; i <= n; i++) {
fin >> val;
md[i] = (md[i - 1] + val) % k;
if (i < a)
continue;
int hi = i - a;
int lo = i - b > 0 ? i - b : 0;
if (lo > 0)
dp[md[lo - 1]]--;
dp[md[hi]]++;
sol += dp[md[i]];
}
fout << sol << '\n';
fout.close();
return 0;
}