Cod sursa(job #1769694)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 2 octombrie 2016 22:56:02
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <cstdio>

int x, n, k, a, b, i, j;
long long s[500000];
unsigned long long sol, nra[500001], nrb[500001];

int main() {
    FILE *f = fopen("divk.in", "r");
    FILE *g = fopen("divk.out", "w");
    fscanf(f, "%d %d %d %d\n", &n, &k, &a, &b);
    for (i = 1; i <= n; i++) {
        fscanf(f, "%d\n", &x);
        s[i] = (1LL*(s[i-1]+x))%k;
        if (i >= a)
            nra[s[i-a]]++;
        if (i > b)
            nrb[s[i-b-1]]++;
        sol += nra[s[i]] - nrb[s[i]];
    }
    fprintf(g, "%d", sol);
    return 0;
}