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