Cod sursa(job #545664)

Utilizator ion_calimanUAIC Ion Caliman ion_caliman Data 3 martie 2011 19:33:27
Problema Divk Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.24 kb
var     m,v,l:array[0..500000]of longint;
        a,b,n,k,i,j,poz:longint;
        nr,s:int64;
        f1,f2:text;

begin
  assign(f1,'divk.in');
  assign(f2,'divk.out');
  reset(f1);
  rewrite(f2);
  readln(f1,n,k,a,b);

  for i:=1 to n do
    readln(f1,m[i]);

{  for i:=1 to n do
  for j:=i-(i xor (i and (i-1))+1 to i do
    v[i]:=v[i]+a[j];  }

{  s:=0;
  for i:=1 to a do
    s:=s+m[i];
  poz:=a;
  for i:=1 to b-a+1 do
    begin
      v[i]:=s;
      inc(poz);
      s:=s+m[poz];
    end;
  nr:=0;
  for i:=a to n do
    begin
      for j:=1 to b-a+1 do
        if v[j] mod k=0 then inc(nr);
      for j:=1 to b-a+1 do
        v[j]:=
    end;  }
  for i:=b to n do
  for j:=i-b+1 to i do
    v[i]:=v[i]+m[j];

  nr:=0;
  for i:=b to n do
  for j:=i-b+1 to i-b+a+1 do
    begin
      if v[i] mod k=0 then inc(nr);
      v[i]:=v[i]-m[j];
    end;
  l[1]:=m[1];
  for i:=2 to b-1 do
    l[i]:=l[i-1]+m[i];

{  for i:=a+1 to b-1 do
    begin
      if s mod k=0 then inc(nr);
      s:=s+m[i];
    end;     }
  for i:=a to b do
    begin
      for j:=i to b-1 do
      if l[j] mod k=0 then inc(nr);
      for j:=1 to a do
      l[j+b-a]:=l[j+b-a]-m[j]
    end;

  writeln(f2,nr);
  close(f2);

end.