Pagini recente » Cod sursa (job #1835896) | Cod sursa (job #704759) | Cod sursa (job #1791197) | Cod sursa (job #335330) | Cod sursa (job #1059856)
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *intrare = fopen("divk.in", "r");
int N, K, A, B, *rest, *frecventa, i, numar_curent, solutie = 0;
fscanf(intrare, "%d %d %d %d", &N, &K, &A, &B);
rest = calloc(N + 1, sizeof(int));
frecventa = calloc(N + 1, sizeof(int));
for(i = 1;i <= N; ++i)
{
fscanf(intrare, "%d", &numar_curent);
rest[i] = (rest[i - 1] + numar_curent) % K;
if(i >= A)
++frecventa[rest[i-A]];//poate sa inceapa acolo
if(i > B)
--frecventa[rest[i - B - 1]];//nu poate
solutie += frecventa[rest[i]];
}
fclose(intrare);
FILE *iesire = fopen("divk.out", "w");
fprintf(iesire, "%d", solutie);
fclose(iesire);
exit(0);
}