比赛 暑假培训六 评测结果 AWWTTTTTTT
题目名称 合并果子 最终得分 10
用户昵称 苏轼 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-07-23 10:01:58
显示代码纯文本
program fruit;

type sz=array[1..20000]of word;

var que:sz;
    i,n,eng:word;
    f1:text;

procedure qs(var a:sz; lo,hi:word);
 procedure sort(l, r:word);
  var i,j,x,y:word;
  begin
   i:=l;
   j:=r;
   x:=a[(l+r) div 2];
   repeat
    while a[i]<x do
     i:=i+1;

    while x<a[j] do
     j:=j-1;

    if i<=j then
    begin
     y:=a[i];
     a[i]:=a[j];
     a[j]:=y;
     i:=i+1;
     j:=j-1;
    end;
   until i>j;

   if l<j then Sort(l,j);
   if i<r then Sort(i,r);
  end;
 begin
  Sort(Lo,Hi);
 end;

procedure hb(sta,fin:word);
 var tem,i,j:word;
     boo:boolean;
 begin
  boo:=false;

  if n=1 then
   exit else
  begin
   tem:=que[sta]+que[sta+1];
   eng:=eng+tem;

   for i:=sta+2 to fin do
    if que[i]>tem then
    begin
     for j:=fin+1 downto i do
      que[j]:=que[j-1];
     que[i]:=tem;
     boo:=true;
    end;

   if not(boo) then
    que[fin+1]:=tem;

   dec(n);
   hb(sta+2,fin+1);
  end;
 end;

begin
 assign(f1,'fruit.in');
 reset(f1);

 readln(f1,n);
 for i:=1 to n do
  read(f1,que[i]);

 close(f1);

 qs(que,1,n);
 hb(1,n);

 assign(f1,'fruit.out');
 rewrite(f1);
 writeln(f1,eng);
 close(f1);
end.