Cod sursa(job #922205)

Utilizator PGSBRobert Nistor PGSB Data 21 martie 2013 23:07:23
Problema Divk Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>

int N,K,A,B;
int X,s[501010];

int nr[101010],x,Xi,Yi;
long long sol;

int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%d%d%d%d",&N,&K,&A,&B);
int lung = B-A+1;
for(int i=1;i<=N;++i)
{
    scanf("%d",&x);
    s[i]=s[i-1]+x;
    s[i]%=K;
   // printf("%d ",s[i]);

}
//printf("\n");
Xi=1;
Yi=lung;
int ind=1;
for(int i=1;i<=lung;++i)
    {
        ++nr[s[i]];
    }
for(int i=1;i<=N+1;++i)
{
    if(ind<=Xi-A+1)
    {
   // printf("%d %d %d\n",ind,Xi,Yi);
   // printf("%d %d\n",s[ind],nr[s[ind]]);
    sol+=nr[s[ind]];
    ++ind;
    }
    if(Xi<=N)
        --nr[s[Xi]];
    ++Xi;
    ++Yi;
    if(Yi<=N)
        ++nr[s[Yi]];
}
printf("%lld",sol);
return 0;
}