Cod sursa(job #1721216)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 24 iunie 2016 20:55:45
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <bits/stdc++.h>
using namespace std;
typedef long long i64;

i64 f[500005],
    s[500005];

int main(void) {
    freopen("divk.in", "r", stdin);
    freopen("divk.out", "w", stdout);
    int n, k, a, b, t;
    i64 ant;
    scanf("%d%d%d%d",&n,&k,&a,&b);

    ant = 0;

    for(int i=1; i<=n; ++i){
        scanf("%d",&t);
        s[i]=(s[i-1]+t)%k;
        if(i>b)
            ++f[s[i-b-1]];
        if(i>=a)
            ++f[s[i-a]];
        ant+=(1LL*f[s[i]]);
    }

    printf("%lld\n",ant);

    fclose(stdin);
    fclose(stdout);
    return 0;
}