Pagini recente » Cod sursa (job #610642) | Cod sursa (job #2651464) | Cod sursa (job #447248) | Cod sursa (job #813653) | Cod sursa (job #2662676)
#include <bits/stdc++.h>
using namespace std;
ifstream in("divk.in");
ofstream out("divk.out");
int n, k, a, b, val[500001], r[100001];
long long siruri(int lung)
{
long long rez = 0;
int suma = 0, pas = 0;
for(int i = 0; i < k; i++)
r[i] = 0;
for(int i = 1; i <= n; i++)
{
if(i > lung)
{
r[(pas+suma)%k]--;
suma = (suma + val[i] - val[i-lung] + k*10000000) % k;
}
else
suma = (suma + val[i]) % k;
pas = (pas + k*10000000 - val[i]) % k;
r[(pas+val[i])%k]++;
rez += r[pas];
}
return rez;
}
int main()
{
in >> n >> k >> a >> b;
for(int i = 1; i <= n; i++)
in >> val[i];
out << siruri(b) - siruri(a-1);
return 0;
}