ELEVATOR - Thang máy vũ trụ
Tác giả: ll931110
Ngôn ngữ: Pascal
program ELEVATOR;
const
input = '';
output = '';
maxn = 400;
maxk = 40000;
type
block = record
h,c,a: longint;
end;
var
free: array[0..maxk] of boolean;
t: array[1..maxn] of block;
n: longint;
procedure init;
var
f: text;
i: longint;
begin
assign(f, input);
reset(f);
readln(f, n);
for i := 1 to n do readln(f, t[i].h, t[i].a, t[i].c);
close(f);
end;
procedure sort;
var
i,j: longint;
tmp: block;
begin
for i := 1 to n - 1 do
for j := i + 1 to n do
if t[i].a > t[j].a then
begin
tmp := t[i]; t[i] := t[j]; t[j] := tmp;
end;
end;
procedure solve;
var
i,j,k,ss: longint;
begin
fillchar(free, sizeof(free), false);
free[0] := true;
for i := 1 to n do
for j := t[i].a downto 0 do if free[j] then
begin
k := 1;
ss := j + t[i].h;
while (k <= t[i].c) and (ss <= t[i].a) do
begin
free[ss] := true;
ss := ss + t[i].h;
inc(k);
end;
end;
end;
procedure printresult;
var
f: text;
res: longint;
begin
res := maxk;
while not free[res] do dec(res);
assign(f, output);
rewrite(f);
writeln(f, res);
close(f);
end;
begin
init;
sort;
solve;
printresult;
end.