Cod sursa(job #692910)

Utilizator vergilius_beberindeie virgil vergilius_be Data 26 februarie 2012 20:49:02
Problema Subsecventa de suma maxima Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.14 kb
program subsir_maximal_dinamic;{de pe infoarena 40puncte}
type sume=array[0..7000001] of int64;
var

i,si,sj,min,pozi,j,nr,pozj,pozfi,pozfj:longint;
summax:int64;

   n:longint;
   f,g : text;
s:sume;
procedure dinamica;
var i:integer;
begin
  assign(f,'ssm.in');
  reset(f);
  assign(g,'ssm.out');
  rewrite(g);
  readln(f,n);
  read(f,nr);
  s[1]:=nr;   pozj:=0;
  summax:=-maxlongint;
  if nr<0 then
  begin
     min:=nr;
     pozj:=1;
  end
  else
    begin
       min:=0;
    end;
  for i:=2 to n do
   begin
     read(f,nr);
     s[i]:=s[i-1] +nr;
     {if summax<0 then
         begin

         end;}
          if  summax<s[i]-min then
                begin
                   summax:=s[i]-min;
                   pozfj:=pozj+1;
                   pozfi:=i;
                end;
               { else
                if  summax=s[i]-min then
                   if}

          if min>s[i] then
                  begin
                     min:=s[i];
                     pozj:=i;
                  end;
       end;
write(g,summax,' ',pozfj,' ',pozfi);
  close(f);
  close(g);
end;
begin
 dinamica;
end.