Cod sursa(job #277892)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 11 martie 2009 22:58:41
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>

int nr=0,v[500100],s,q[500100],n,k,i,j,suma=0,a,b,x;

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

 scanf("%d %d %d %d",&n,&k,&a,&b);
 for (i=1;i<=n;++i)
      {
       scanf("%d", &s);
       suma+=s;
       v[i]=suma;
      }

 /*for (i=1;i<n;++i)
 {
  suma=x=0;
  for (j=i;j<=n;++j)
  {
     suma+=v[j];
     x++;
     if (suma%k==0 && x>=a && x<=b)
	 nr++;
	 else
	 if (x>b) break;
  }
 } */


 for (i=1;i<=n;++i)   
     {   
      for (j=i-b;j<=i-a+1;++j)
	   v[j%k]++;
      q[v[i-b+1]%k]--;
      q[v[i-a+2]%k]++;   
     }   
 for (i=1;i<=n;++i)   
      nr+=q[v[i]%k];   

 printf("%d", nr);
 return 0;
}