Cod sursa(job #1475444)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 24 august 2015 07:16:45
Problema Divk Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#define maxn 500005
#define maxk 100005
#define maxb 8192
int n,K,A,B;
int a[maxn],nr[maxk];
long long s[maxn];
long long sol;
void read()
{
    scanf("%d%d%d%d",&n,&K,&A,&B);
    for(int i=1;i<=n;i++)
        scanf("%d",a+i);
}

void solve()
{
    for(int i=1;i<=n;i++)
        s[i]=s[i-1]+a[i];
    nr[0]=1;
    for(int i=A;i<=n;i++) {
        sol+=nr[s[i]%K];
        nr[s[i-A+1]%K]++;
        if(i>=B)
            nr[s[i-B]%K]--;
    }
}
int main() {
    freopen("divk.in","r",stdin);
    freopen("divk.out","w",stdout);
    read();
    solve();
    printf("%lld",sol);
    fclose(stdin);
    fclose(stdout);
    return 0;
}