⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p1093.pas

📁 高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程
💻 PAS
字号:
PROGRAM p1093;


TYPE
        node=record
                x,y,z   :longint;
                end;

VAR
        n       :longint;
        pack    :array[1..180]of node;
        ans     :array[1..180]of longint;
        a,c,b   :longint;
        i       :longint;
        j       :longint;
        max     :longint;
PROCEDURE sort;
var
        i,j,k   :longint;
        temp    :node;
        flag    :boolean;
begin
for i:=1 to 6*n do
        for j:=i+1 to 6*n do
                begin
                flag:=false;
                if pack[i].x>pack[j].x then flag:=true
                        else
                        if pack[i].x=pack[j].x then
                                begin
                                if pack[i].y>pack[j].y then flag:=true
                                        else
                                        if (pack[i].y=pack[j].y)and(pack[i].z>=pack[j].z) then flag:=true;
                                end;
                if flag then
                        begin
                        temp:=pack[i];
                        pack[i]:=pack[j];
                        pack[j]:=temp;
                        end;
                end;
end;


PROCEDURE best;
var
        I,j     :longint;
begin
ans[1]:=pack[1].z;
for i:=2 to 6*n do
        begin
        ans[i]:=0;
        for J:=1 to i-1 do
                if (pack[j].x<pack[i].x) and (pack[j].y<pack[i].y) and (ans[j]>ans[i]) then
                        ans[i]:=ans[j];
        ans[i]:=ans[i]+pack[i].z;
        end;
end;

BEGIN
readln(n);
j:=0;
while n<>0 do
        begin
        inc(j);
        for I:=1 to n do
                begin
                readln(a,b,c);
                if (a=0)or(b=0)or(c=0) then
                        begin
                        a:=0;
                        b:=0;
                        c:=0;
                        end;
                with pack[6*i-5] do
                        begin
                        x:=a;
                        y:=b;
                        z:=c;
                        end;
                with pack[6*i-4] do
                        begin
                        x:=b;
                        y:=a;
                        z:=c;
                        end;
                with pack[6*i-3] do
                        begin
                        x:=c;
                        y:=b;
                        z:=a;
                        end;
                with pack[6*i-2] do
                        begin
                        x:=c;
                        y:=a;
                        z:=b;
                        end;
                with pack[6*i-1] do
                        begin
                        x:=a;
                        y:=c;
                        z:=b;
                        end;
                with pack[6*i] do
                        begin
                        x:=b;
                        y:=c;
                        z:=a;
                        end;
                end;
        sort;
        best;
        max:=0;
        for i:=1 to 6*n do if ans[i]>max then max:=ans[i];
        writeln('Case ',j,': maximum height = ',max);
        readln(n);
        end;
END.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -