Pagini recente » Cod sursa (job #169561) | Cod sursa (job #1788119) | Cod sursa (job #725379) | Cod sursa (job #498880) | Cod sursa (job #1496358)
#include <bits/stdc++.h>
using namespace std;
const int Nmax = 500000 + 1;
const int Kmax = 100000;
int s[Nmax];
int cnt[Kmax];
long long sol;
int main()
{
ifstream in("divk.in");
ofstream out("divk.out");
int n, k, minLength, maxLength;
in >> n >> k >> minLength >> maxLength;
s[0] = 0;
for ( int i = 1; i <= n; i++ )
{
in >> s[i];
s[i] += s[i - 1];
s[i] -= s[i] / k * k;
}
for ( int i = minLength; i <= maxLength; i++ )
++ cnt[ s[i] ];
for ( int i = 0; i + minLength <= n; i++ )
{
sol += cnt[ s[i] ];
-- cnt[ s[i + minLength] ];
if ( i + maxLength + 1 <= n )
++ cnt[ s[i + maxLength + 1] ];
}
out << sol << '\n';
out.close();
return 0;
}