MCARDS - Card Sorting
Tác giả: khuc_tuan
Ngôn ngữ: Pascal
//{$APPTYPE CONSOLE}
{$MODE DELPHI}
uses
SysUtils, Math;
var
res, i, n, m : integer;
f, a, value, color : array[0..400] of integer;
used : array[1..4] of boolean;
h : array[1..4] of integer;
procedure duyet(pos : integer);
var
i, j : integer;
begin
if pos > m then
begin
for i:=1 to n * m do
begin
for j:=1 to m do if color[i]=h[j] then break;
a[i] := j * 1000 + value[i];
end;
for i:= 1 to n * m do
begin
f[i] := 1;
for j:=1 to i-1 do if (a[j] < a[i]) and (f[j] + 1 > f[i]) then
f[i] := f[j] + 1;
if res < f[i] then res := f[i];
end;
exit;
end;
for i:=1 to m do if not used[i] then
begin
h[pos] := i;
used[i] := true;
duyet( pos + 1);
used[i] := false;
end;
end;
begin
read(m, n);
for i:=1 to n * m do
begin
read(color[i], value[i]);
end;
duyet(1);
writeln(n*m - res);
end.