比赛 暑假培训六 评测结果 ATTEEEEEEE
题目名称 合并果子 最终得分 10
用户昵称 打不死的羊 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-07-23 10:59:53
显示代码纯文本
program fruit;
type
fxz=array[0..1000]of longint;
var
a:fxz;
step,i,m,n:longint;
f1,f2:text;
procedure quick(a:fxz;l,r:longint);
var
i,j:longint;
begin if l<r then begin
                  i:=l;j:=r;a[0]:=a[i];
                  if i<>j then begin
                               if (a[j]>a[0])and(j>i) then j:=j-1;
                               if i<j then begin a[i]:=a[j];i:=i+1;end;
                               if (a[i]<=a[0])and(j>i) then i:=i+1;
                               if i<j then begin a[j]:=a[i];j:=j-1;end;
                               a[i]:=a[0];
                               quick(a,l,j-1);
                               quick(a,i+1,r);
                               end;
                  end;
end;
procedure work(m:longint;a:fxz);
var
i,j:longint;
begin
if n>1 then begin
            if (m>a[1])or(m<a[n]) then begin
            for i:=1 to n-1 do
            if ((a[i]<=m)and(a[i+1]>m))or((a[i]<m)and(a[i+1]>=m)) then
            begin for j:=n+1 downto i+1 do a[j]:=a[j-1];
                  a[i+1]:=m;n:=n+1;end;end
                                   else if a[1]>m then begin
                                        for i:=n+1 downto 2 do a[i]:=a[i-1];
                                        a[1]:=m;n:=n+1;end
                                                  else begin
                                        a[n+1]:=m;n:=n+1;end;
            m:=a[1]+a[2];step:=step+m;for i:=1 to n-2 do a[i]:=a[i+2];n:=n-2;
            work(m,a);
            end;
end;
begin
assign(f1,'fruit.in');
assign(f2,'fruit.out');
reset(f1);rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
quick(a,1,n);
m:=a[1]+a[2];step:=m;
for i:=1 to n-2 do
a[i]:=a[i+2];
n:=n-1;
work(m,a);
writeln(f2,step);
close(f1);close(f2);
end.