Cod sursa(job #1453569)

Utilizator GeiGeiGeorge Cioroiu GeiGei Data 23 iunie 2015 20:57:16
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <iostream>

using namespace std;

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

    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, v[500005], k, a, b, dp[100005];
   // int n, v[55], k, a, b, dp[15];
    cin >> n >> k >> a >> b;
    v[0] = 0;
    for (int i = 1; i <= n; i++) {
        int aux;
        cin >> aux;
        v[i] = (v[i - 1] + aux) % k;
    }
    long long ans = 0;
    for (int i = 0; i < k; i++) {
        dp[i] = 0;
    }
    for (int i = 1; i <= n; i++) {
        if (i >= a) {
            dp[v[i - a]]++;
        }
        if (i > b) {
            dp[v[i - b - 1]]--;
        }
        ans += dp[v[i]];
    }
    cout << ans;

    return 0;
}