Cod sursa(job #390408)

Utilizator guralivuion ion guralivu Data 3 februarie 2010 18:30:27
Problema A+B Scor 0
Compilator fpc Status done
Runda Lista lui wefgef Marime 1.44 kb
program expresie;
var f,o:text;
    i,max,max2,p,p2,sp,n:longint;
    m:array[0..1000]of integer;
    s:array[0..1000]of longint;

begin
    assign(f,'expresie.in');
    reset(f);
    assign(o,'expresie.out');
    rewrite(o);
    readln(f,n);
    for i:=1 to n do
        begin
             readln(f,m[i]);
             s[i]:=m[i-1]+m[i];
        end;
    for i:=1 to n do
          begin
              if s[i]>max then
                 begin
                     max2:=max;p2:=p;
                     max:=s[i];
                     p:=i;
                 end else
              if s[i]=max then
                 begin
                    if (m[p-1]*m[p])<(m[i-1]*m[i]) then begin p2:=p;p:=i;end else
                     if (m[p-1]*m[p])=(m[i-1]*m[i]) then begin p2:=p;p:=i;end;
                 end
              else if s[i]>max2 then
                   begin
                      max2:=s[i];
                      p2:=i;
                   end else
              if s[i]=max2 then
                 if ((m[p2-1]*m[p2])<(m[i-1]*m[i]))or((m[p2-1]*m[p2])<(m[i-1]*m[i])) then
                 begin p2:=p;p:=i;end;

          end;
    if p-p2=1 then
             sp:=m[p2-1]*m[p]*m[p2]
    else if p2-p=1 then
            sp:=m[p]*m[p-1]*m[p2]
    else sp:=m[p-1]*m[p]+m[p2-1]*m[p2];
    m[p-1]:=0;m[p]:=0;m[p2-1]:=0;m[p2]:=0;
    for i:=1 to n do
        sp:=sp+m[i] ;
    write(o,sp);
    close(o);
    close(f);
end.