Pagini recente » Istoria paginii runda/qsasdasgegs | Cod sursa (job #850229) | Istoria paginii runda/pentru_fete_valcea/clasament | Monitorul de evaluare | Cod sursa (job #2519659)
#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 n,k,a,b, x;
int f[100005];
int s[100005];
int main() {
fin >> n >> k >> a >> b;
int64_t result = 0;
int l = b - a + 1;
for (int i = 0; i < n; ++i) {
fin >> x;
if (i > 0) {
s[i] = (s[i - 1] + x) % k;
} else {
s[i] = x % k;
}
f[s[i]]++;
if (i > b) {
f[s[i - l]]--;
}
if (i >= a) {
result += f[s[i]] - 1;
}
}
fout << result;
return 0;
}