Pagini recente » Cod sursa (job #3315381) | Cod sursa (job #2510086) | Cod sursa (job #3349576) | Cod sursa (job #2762032) | Cod sursa (job #1749208)
#include<stdio.h>
FILE *in, *out;
int nrnr[100010], v[500005];
void printnrnr()
{
int i;
for(i = 0; i <= 10; i++) {
printf("%d ", nrnr[i]);
} printf("\n");
}
int main ()
{
int n, a, b, k, i;
long long s;
in = fopen("divk.in", "r");
out = fopen("divk.out", "w");
fscanf(in, "%d%d%d%d", &n, &k, &a, &b);
for(i = 1; i <= n; i++) {
fscanf(in, "%d", &v[i]);
v[i] = (v[i - 1] + v[i]) % k;
//printf("%d ", v[i]);
} //printf("\n");
for(i = a; i <= n && i <= b; i++) {
nrnr[v[i]]++;
}
s = 0;
s = s + nrnr[v[0]];
for(i = 1; i <= n - b; i++) {
//printnrnr();
nrnr[v[i + a - 1]]--;
nrnr[v[i + b]]++;
//printf("%d %d %d %d\n", i, i + a - 1, i + b, s);
s = s + nrnr[v[i]];
}
for(i = n - b + 1; i <= n - a; i++) {
//printnrnr();
nrnr[v[i + a - 1]]--;
//printf("%d %d %d\n", i, i + a - 1, s);
s = s + nrnr[v[i]];
}
fprintf(out, "%lld", s);
fclose(in);
fclose(out);
return 0;
}