Cod sursa(job #1654061)

Utilizator SilviuIIon Silviu SilviuI Data 16 martie 2016 19:56:16
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <stdio.h>
#define nmax 500010

using namespace std;

int n,k,a,b;
int t[nmax],sum[nmax];
int v[nmax/5];

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

    scanf("%d %d %d %d",&n,&k,&a,&b);

    for (int i=1;i<=n;i++) scanf("%d",&t[i]);

    for (int i=1;i<=n;i++) sum[i]=(sum[i-1]+t[i])%k;

    v[0]++; long long int sol=0;

    for (int i=a;i<=n;i++) {
        sol=sol+v[sum[i]];
        if (i-b>=0) v[sum[i-b]]--;
        v[sum[i-a+1]]++;
    }

    printf("%d",sol);

    return 0;
}