Cod sursa(job #1418076)

Utilizator ClaudiuNicolaClaudiu Nicola ClaudiuNicola Data 11 aprilie 2015 21:18:11
Problema Subsecventa de suma maxima Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.24 kb
program ssmdinamica;
type vector=record
        n:longint;
        x:array[1..7000005] of integer;
end;

var v:vector; bestSum:longint; start,stop:longint;

procedure citeste(var v:vector);
var i:longint;
begin
        assign(input,'ssm.in'); reset(input);
                readln(v.n);
                for i:=1 to v.n do
                        read(v.x[i]);
        close(input);
end;

procedure ssm_dinamic(v:vector; var bestSum:longint; var start,stop:longint);
var i:longint; sum:longint;  aux:longint;
begin
        bestSum:=0; start:=1; stop:=1; sum:=0; aux:=0;
        for i:=1 to v.n do
        begin
            if sum<0 then
            begin
                sum:=v.x[i]; aux:=i;
            end
            else
                sum:=sum+v.x[i];

            if bestSum<sum then
            begin
                bestSum:=sum;
                start:=aux; stop:=i;
            end;
        end;
end;

procedure tipareste(bestSum:longint; start,stop:longint);
begin
        assign(output,'ssm.out'); rewrite(output);
                write(bestSum,' ', start,' ', stop);
        close(output);
end;

begin
        citeste(v);
        ssm_dinamic(v,bestSum,start,stop);
        tipareste(bestSum, start, stop);
end.