Pagini recente » Cod sursa (job #2447131) | Cod sursa (job #1470878) | Cod sursa (job #2695292) | Cod sursa (job #315163) | Cod sursa (job #475805)
Cod sursa(job #475805)
#include <cstdio>
#include <cstring>
using namespace std;
#define dim 8192
char ax[dim];
int pz;
inline void cit (int &x)
{
x = 0;
while (ax[pz] < '0' || ax[pz] > '9')
if (++pz == dim)
fread (ax, 1, dim, stdin), pz = 0;
while (ax[pz] >= '0' && ax[pz] <= '9')
{
x = x * 10 + ax[pz] - '0';
if (++pz == dim)
fread (ax, 1, dim, stdin), pz = 0;
}
}
int a[500001];
int x[100001];
int s[500001];
int n, K, A, B;
int main ()
{
freopen ("divk.in", "r", stdin);
freopen ("divk.out", "w", stdout);
cit (n); cit (K); cit (A); cit (B);
int i;
for (i = 1; i <= n; ++i)
cit (a[i]);
s[0] = 0;
for (i = 1; i <= n; ++i)
s[i] = (s[i - 1] + a[i]) % K;
long long sol = 0;
for (i = A; i <= n; ++i)
{
//printf ("(%d %d %d\n", i, i - A, i - B);
++x[ s[i - A] ];
if (i - B - 1 >= 0)
--x[ s[i - B - 1] ];
//printf ("%d : %d\n", i, x[ s[i] ]);
sol += (long long)( x[ s[i] ]);
}
printf ("%lld\n", sol);
return 0;
}