Pagini recente » Cod sursa (job #2469185) | Cod sursa (job #1942609) | Cod sursa (job #663203) | Cod sursa (job #2102520) | Cod sursa (job #1233781)
#include <fstream>
using namespace std;
ifstream is ("divk.in");
ofstream os ("divk.out");
#define BUFFER 1<<17
char Pars[BUFFER], *p;
unsigned int GET();
void Check();
unsigned int N, A, B, K;
unsigned int v[500003], r[100003];
unsigned int S;
int main()
{
p = Pars;
N = GET();
K = GET();
A = GET();
B = GET();
for (unsigned int i = 1, x; i <= N; ++i)
x = GET(), v[i] = (v[i-1] + x) % K;
for (unsigned int i = 0; i <= N; ++i)
{
if (i >= A)
r[v[i-A]]++;
if (i-1 >= B)
r[v[i-B-1]]--;
S += r[v[i]];
}
os << S;
is.close();
os.close();
}
unsigned int GET()
{
unsigned int X = 0;
while (*p <= '0' || *p > '9') ++p, Check();
while (*p >= '0' && *p <= '9') X = X * 10 + (*p - '0'), ++p, Check();
return X;
};
void Check()
{
if (*p == '\0') is.get(Pars, BUFFER, '\0'), p = Pars;
};