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.