Pagini recente » Cod sursa (job #1722265) | Cod sursa (job #1120047) | Monitorul de evaluare | Cod sursa (job #1100039) | Cod sursa (job #1143235)
#include <cstdio>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
int main(int argc, char *argv[]) {
int k, a, b, n;
fin >> n >> k >> a >> b;
vector<int> sums;
vector<vector<int> > mod(k, vector<int>());
for (int i = 0; i < n; ++i) {
int t;
fin >> t;
if (i == 0) {
sums.push_back(t % k);
} else {
sums.push_back((sums[i - 1] + t) % k);
}
mod[sums[i]].push_back(i);
}
int c = 0;
for (int i = 0; i < (int)sums.size(); ++i) {
for (int j = 0; j < (int)mod[sums[i]].size(); ++j) {
int m = mod[sums[i]][j];
if (i - m >= a - 1 && i - m <= b - 1) {
++c;
}
}
}
fout << c << endl;
fout.close();
return 0;
}