Cod sursa(job #531432)

Utilizator guralivuion ion guralivu Data 9 februarie 2011 17:46:42
Problema Subsecventa de suma maxima Scor 75
Compilator fpc Status done
Runda Arhiva educationala Marime 1.39 kb
program subsir_maximal;
var
i,sj,pozi,nr,pozj,pozfi,pozfj,summax:longint;
si:int64;
   n:longint;
   f,g : text;
procedure rezolvare;
begin
  assign(f,'ssm.in');
  reset(f);
  assign(g,'ssm.out');
  rewrite(g);
  read(f,n);
  read(f,nr);
  sj:=nr; si:=nr;
  {si---> suma numerelor din fisier pana la cel cu numarul de ordine i}
  {sj---> suma minima care s-a obtinut pana la momentul actual}
  pozj:=1;{numarul de ordine al numarului citit pentru care s-a obtinut suma minima sj}
  summax:=nr;{suma maxima ce se poate obtine}
 for i:=2 to n do
  begin
     read(f,nr);
     si:=si+nr;
     if si-sj >summax then{inseamna ca am obtinut o noua secventa}
                 begin
                  pozfi:=i; {pozitia finala a lui i }
                  if pozj<>1 then
                  begin
                    pozfj:=pozj+1;{pozitia finala a lui j in cadrul secventei maxime}
                    summax:=si-sj;
                  end
                  else
                  begin
                   pozfj:=pozj;{pozitia finala a lui j in cadrul secventei maxime}
                    summax:=si;
                  end;

                 end;
     if si<sj then {am obtinut o suma mai mica}
            begin
                pozj:=i;
                sj:=si;
            end;
  end;
  close(f);
  writeln(g,summax,' ',pozfj,' ',pozfi);
  close(g);
end;
begin
   rezolvare;
end.