Pagini recente » Cod sursa (job #148527) | Cod sursa (job #2030960) | Cod sursa (job #1666311) | Cod sursa (job #1123051) | Cod sursa (job #1327326)
#include <stdio.h>
#define MAXN 500000
#define MAXK 100000
int fr[MAXK], sum[MAXN];
int main(){
int n, a, b, k, tr, i, v;
long long ans;
FILE *fin, *fout;
fin=fopen("divk.in", "r");
fout=fopen("divk.out", "w");
fscanf(fin, "%d%d%d%d", &n, &k, &a, &b);
tr=0;
for(i=1; i<=n; i++){
fscanf(fin, "%d", &v);
sum[i]=(sum[i-1]+v)%k;
}
ans=0;
for(i=a; i<=b; i++){
fr[sum[i-a]]++;
ans+=fr[sum[i]];
}
for(i=b; i<=n; i++){
fr[sum[i-b-1]]--;
fr[sum[i-a]]++;
ans+=fr[sum[i]];
}
fprintf(fout, "%lld\n", ans);
fclose(fin);
fclose(fout);
return 0;
}