Pagini recente » Cod sursa (job #2000887) | Cod sursa (job #238717) | Cod sursa (job #2871014) | Cod sursa (job #1680499) | Cod sursa (job #1769525)
#include <stdio.h>
const int MAX = 500000;
long long rez;
int nra[MAX], nrb[MAX], sum[MAX+1];
int main() {
FILE *fin = fopen("divk.in", "r"), *fout = fopen("divk.out", "w");
int n, k, a, b, i, cit;
fscanf(fin, "%d%d%d%d", &n, &k, &a, &b);
int k1 = 0;
for(i = 1;i <= n;i++) {
fscanf(fin, "%d", &cit);
sum[i]=(sum[i - 1]+cit)%k;
if(i >= a)
nra[sum[i - a]]++;
if(i >= b+1)
nrb[sum[i - b - 1]]++;
// else if (i == b + 2)
// nr[0]--;
rez += (nra[sum[i]] - nrb[sum[i]]);
//printf("la pasul %d apar in plus %d si ajungem la %lld\n", i, nr[sum[i]], rez);
}
fprintf(fout, "%lld", rez);
fclose(fin);
fclose(fout);
return 0;
}