Pagini recente » Cod sursa (job #2593713) | Cod sursa (job #1311374) | Cod sursa (job #102014) | Cod sursa (job #1141652) | Cod sursa (job #2718052)
#include <bits/stdc++.h>
#define NMAX 500005
#define KMAX 100005
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
vector<int> prec[KMAX];
int sum[NMAX];
int main()
{
int n, k, a, b;
fin >> n >> k >> a >> b;
prec[0].push_back(0);
for(int i = 1; i <= n; ++i){
int val;
fin >> val;
sum[i] = sum[i - 1] + val;
sum[i] %= k;
prec[sum[i]].push_back(i);
}
long long rez = 0;
for(int i = a; i <= n; ++i){
int csSt = max(i - b, 0);
int csDr = i - a;
int pzA = (lower_bound(prec[sum[i]].begin(), prec[sum[i]].end(), csSt) - prec[sum[i]].begin());
int pzB = (upper_bound(prec[sum[i]].begin(), prec[sum[i]].end(), csDr) - prec[sum[i]].begin()) - 1;
rez += (pzB - pzA + 1);
}
fout << rez << '\n';
return 0;
}