Cod sursa(job #31035)

Utilizator therain3rVlad Dumitrescu therain3r Data 15 martie 2007 13:26:01
Problema Divk Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream.h>
long int n,k,a,b,s[500100],nr=0;


void citire()
{
  int i;
  ifstream f("divk.in");
  f>>n>>k>>a>>b;
  for(i=1;i<=n;i++)
    f>>s[i];
  f.close();
}

void prelucrare()
{
  int i=1,j=a,mod=0,sum=0,z,t=1;
  for(z=1;z<=a;z++)
    sum+=s[z];
  while(t)
  {
    if(mod==0)
    {
      while(j-i<b && j<=n)
      {
	if(sum%k==0) nr++;
	sum+=s[++j];
      }
      sum-=s[i++];
      mod=1;
    }
    else
    {
      while(j-i>=a-1)
      {
	if(sum%k==0) nr++;
	sum-=s[j--];
      }
      sum+=s[++j];
      sum-=s[i++];
      sum+=s[++j];
      mod=0;
    }
    if(i>n-a+1)
	t=0;
  }
}

int main()
{
  citire();
  prelucrare();

  ofstream g("divk.out");
  g<<nr<<"\n";
  g.close();
  return 0;
}