Cod sursa(job #1896661)

Utilizator EuAlexOtaku Hikikomori EuAlex Data 28 februarie 2017 20:21:56
Problema Divk Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <cstdio>

using namespace std;

int s[500005], f[100005];

int main() {
    freopen("divk.in", "r", stdin);
	freopen("divk.out", "w", stdout);

    int n, k, a, b, x, sol = 0;
    scanf("%d%d%d%d", &n, &k, &a, &b);

    for(int i = 1; i <= n; ++ i) {
        scanf("%d", &x);
        s[i] = s[i - 1] + x;
    }

    ++ f[0];

    for(int i = a; i <= n; ++ i) {
        sol += f[s[i] % k];
        ++ f[s[i - a + 1] % k];
        if(i - b >= 0) {
            -- f[s[i - b] % k];
        }
    }

    printf("%d", sol);

    return 0;
}