Cod sursa(job #141683)

Utilizator DranaXumAlexandru Dumitru Paunoiu DranaXum Data 23 februarie 2008 16:14:32
Problema Divk Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>

FILE *fin=freopen("divk.in","r",stdin);
FILE *fout=freopen("divk.out","w",stdout);

int m[2][500001],n,k,a,b,t;
int x[500001];

void citire()
{
	scanf("%d%d%d%d",&n,&k,&a,&b);
  int i;
  for(i=1;i<=n;i++)
  {

  	scanf("%d",&x[i]);

    m[1][i]=m[1][i-1]+x[i];

    if(i>=a)
    m[1][i]-=x[i-a];

    if(m[1][i]%k==0) t++;
  }
  fclose(fin);
}

void rezolva()
{
  int i,crnt,prev,j;
  crnt=1;
  for(i=a+1;i<=b;i++)
  {
    prev=crnt;
    crnt=!crnt;
  	for(j=i;j<=n;j++)
    {
    	m[crnt][j]=m[prev][j]+x[j-i+1];
      if(m[crnt][j]%k==0)
      t++;
    }
  }
}

void afiseaza()
{
	printf("%d",t);
  fclose(fout);
}

int main()
{
	citire();
  rezolva();
  afiseaza();
	return 0;
}