Pagini recente » Cod sursa (job #508226) | Cod sursa (job #2411986) | Cod sursa (job #28744) | Cod sursa (job #1769517)
#include <stdio.h>
const int MAX = 500000;
long long rez;
int nr[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);
nr[0] = 1;
int k1 = 0;
for(i = 1;i <= n;i++) {
fscanf(fin, "%d", &cit);
sum[i]=(sum[i - 1]+cit)%k;
if(i > a)
nr[sum[i - a]]++;
if(i >= b+1)
nr[sum[i - b - 1]]--;
else if (i == b + 2)
nr[0]--;
rez += (nr[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;
}