比赛 |
暑假培训六 |
评测结果 |
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.