Cod sursa(job #196287)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 25 iunie 2008 11:35:10
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.45 kb
#include <cstdio>
int n,k,a,b,x,s[500002],nr[100000],i;
long long sol;
int main(){
    freopen("divk.in","r",stdin);
    freopen("divk.out","w",stdout);
    scanf("%d %d %d %d",&n,&k,&a,&b);
    for (i=1,s[0]=0;i<=n;++i){
        scanf("%d",&x);
        s[i]=(s[i-1]+x)%k;
        }
    for (i=1;i<=n;++i){
        if (i>=a) nr[s[i-a]]++;
        sol+=nr[s[i]];
        if (i>=b) nr[s[i-b]]--;
        }
    printf("%lld",sol);
    return 0;
}