const fin = 'tower1035.inp'; fon = 'tower1035.out';
maxn=105;vc=maxlongint;
type Da = record
a,b,g: longint;
end;
var d:array[0..maxn] of da;
f,t:array[0..maxn] of longint;
n:longint;
procedure nhap;
var i,x,y:longint;
begin
read(n);
for i:=1 to n do
begin
read(x,y,d[i].g);
if x<y then
begin
d[i].a:=x;d[i].b:=y;
end
else
begin
d[i].a:=y;d[i].b:=x;
end;
end;
end;
function dt(x: da): longint;
begin
exit(x.a*x.b);
end;
procedure qs(l,h:longint);
var i,j:longint;
m,t:da;
begin
m:=d[(l+h) div 2];
i:=l;j:=h;
repeat
while dt(d[i])>dt(m) do inc(i);
while dt(d[j])<dt(m) do dec(j);
if i<=j then
begin
t:=d[i]; d[i]:=d[j]; d[j]:=t;
inc(i); dec(j);
end;
until i>j;
if L<j then qs(L,j);
if i<H then qs(i,H);
end;
procedure xuli;
var
i,jmax,j,max:longint;
kq:array[1..maxn] of longint;
begin
qs(1,n);
//for i:=1 to n do write(dt(d[i]),' ');
f[0]:=0;
f[1]:=d[1].g;
for i:=2 to n do
begin
jmax:=0;
for j:=1 to i-1 do
if (d[j].a>=d[i].a) and (d[j].b>=d[i].b) and (f[j]>f[jmax]) then
jmax:=j;
f[i]:=f[jmax]+d[i].g;
end;
max:=0;
for i:=1 to n do
if f[i]>max then max:=f[i];
write(max);
end;
begin
assign(input,fin);reset(input);
assign(output,fon);rewrite(output);
nhap;
xuli;
close(input);close(output);
END.
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Chủ Nhật, 24 tháng 4, 2022
TOWER1035 PASCAL
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.