Cod sursa(job #881225)

Utilizator Danciu_CornelDanciu Cornel Danciu_Cornel Data 17 februarie 2013 20:15:25
Problema Subsecventa de suma maxima Scor 70
Compilator fpc Status done
Runda Arhiva educationala Marime 1.38 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.