Pagini recente » Cod sursa (job #2314577) | Cod sursa (job #1242111) | Cod sursa (job #2720638) | Cod sursa (job #210922) | Cod sursa (job #2523421)
#include <fstream>
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <set>
#include <map>
#include <string.h>
#include <queue>
using namespace std;
#ifdef DEBUG
string name = "data";
#else
string name = "divk";
#endif
ifstream fin(name + ".in");
ofstream fout(name + ".out");
int s[500005];
int f[100005];
int n,k;
int64_t sum(int a, int b) {
memset(f, 0, sizeof(f));
if (b < 1 || a > b) {
return 0;
}
int64_t result = 0;
for (int i = 1; i <= n; ++i) {
f[s[i]]++;
if (i > b) {
f[s[i - b]]--;
}
if (i >= a) {
result += f[s[i]] - 1;
}
if (i >= a && s[i] == 0) {
result++;
}
}
return result;
}
int main() {
int a,b, x;
fin >> n >> k >> a >> b;
for (int i = 1; i <= n; ++i) {
fin >> x;
s[i] = (s[i - 1] + x) % k;
}
fout << (sum(a, b) - sum(1, a - 1));
return 0;
}