Pagini recente » Cod sursa (job #380761) | Cod sursa (job #576140) | Cod sursa (job #910793) | Cod sursa (job #990498) | Cod sursa (job #68982)
Cod sursa(job #68982)
program cutii;
type dim=record
x,y,z:longint;
end;
var f,g:text;
n,t,dh:longint;
v:array[1..3501] of dim;
procedure iofile;
begin
assign(f,'cutii.in');
reset(f);
assign(g,'cutii.out');
rewrite(g);
readln(f,n,t);
end;
procedure repair(i:longint);
var l,r,max:longint;
aux:dim;
begin
l:=i*2;
r:=l+1;
max:=i;
if (l<=dh)and(v[i].x<v[l].x) then
max:=l;
if (r<=dh)and(v[max].x<v[r].x) then
max:=r;
if max<>i then
begin
aux:=v[i];
v[i]:=v[max];
v[max]:=aux;
repair(max);
end;
end;
procedure build_heap;
var i:longint;
begin
for i:=n div 2 downto 1 do
repair(i);
end;
procedure heapsort;
var i:longint;
aux:dim;
begin
build_heap;
for i:=n downto 2 do
begin
aux:=v[i];
v[i]:=v[1];
v[1]:=aux;
dh:=dh-1;
repair(1);
end;
end;
procedure subsir;
var b:array[1..3501] of integer;
i,j,max:longint;
begin
b[1]:=1;
for i:=2 to n do
begin
b[i]:=1;
for j:=1 to i-1 do
if (v[j].y<v[i].y)and(v[j].z<v[i].z) then
if b[i]<b[j]+1 then
b[i]:=b[j]+1;
end;
max:=b[1];
for i:=2 to n do
if b[i]>max then max:=b[i];
writeln(g,max);
end;
procedure solve;
var i,j:longint;
begin
for i:=1 to t do
begin
for j:=1 to n do
readln(f,v[j].x,v[j].y,v[j].z);
dh:=n;
heapsort;
subsir;
end;
close(g);
end;
begin
iofile;
solve;
end.