Pagini recente » Cod sursa (job #3336983) | Cod sursa (job #243522) | Cod sursa (job #495485) | Cod sursa (job #1741309) | Cod sursa (job #3337259)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
int n, k, A, B;
int a[500005], s[500005], fr[100005];
long long F(int x)
{
int i, j;
long long nrsecv = 0;
s[0] = j = 0;
fr[0] = 1;
for(i = 1; i <= 100000; i++) fr[i] = 0;
for(i = 1; i <= n; i++)
{
s[i] = (s[i - 1] + a[i]) % k;
if(i - j > x)
{
fr[s[j]]--;
j++;
}
nrsecv += fr[s[i]];
fr[s[i]]++;
}
return nrsecv;
}
int main()
{
int i;
fin >> n >> k >> A >> B;
for(i = 1; i <= n; i++) fin >> a[i];
fout << F(B) - F(A - 1) << '\n';
return 0;
}