Cod sursa(job #131924)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 4 februarie 2008 18:37:57
Problema Secventa 2 Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.36 kb
var fi,fo:text;
    i,n,k,max,j,pozi,pozf,su,sumadr:longint;
    vl,sdr,sst,pf:array[0..50001]of longint;
begin
  assign(fi,'secv2.in'); reset(fi);
  assign(fo,'secv2.out'); rewrite(fo);
  read(fi,n,k);
  sdr[0]:=0; sst[0]:=0;
  for i:=1 to n do
    begin
      read(fi,vl[i]);
      sst[i]:=sst[i-1]+vl[i];
    end;
  if n=k then write(fo,1,' ',n,' ',sst[n])
    else
      begin
         max:=0;
         for i:=n downto 1 do
           begin
             if sdr[i+1]>0 then
               begin
                 sdr[i]:=sdr[i+1]+vl[i];
                 pf[i]:=pf[i+1];
               end
             else
               begin
                 sdr[i]:=vl[i];
                 pf[i]:=i;
               end;
             if sdr[i]>max then max:=sdr[i];
           end;
         for i:=1 to n-k do
           begin
             sumadr:=sst[i+k]-sst[i-1]+sdr[i+k+1];
             if sumadr>max then
               begin
                 pozi:=i;
                 pozf:=pf[i+k+1];
                 max:=sumadr;
               end
             else
               if sumadr=max then
                if pf[i+k+1]-i>pozf-pozi then
                  begin
                    pozi:=i;
                    pozf:=pf[i+k+1];
                  end;
           end;
         write(fo,pozi,' ',pozf,' ',max);
      end;
  close(fi);
  close(fo);
end.