From 2f674dc80f0382f1c3178f435714960734dc9d3c Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sat, 6 Jun 2020 21:33:13 +0700 Subject: Reorganize stuff from secondary school --- "12/TP-ThanhHo\303\241-2009/bai5.pas" | 112 ---------------------------------- 1 file changed, 112 deletions(-) delete mode 100644 "12/TP-ThanhHo\303\241-2009/bai5.pas" (limited to '12/TP-ThanhHoá-2009/bai5.pas') diff --git "a/12/TP-ThanhHo\303\241-2009/bai5.pas" "b/12/TP-ThanhHo\303\241-2009/bai5.pas" deleted file mode 100644 index 867b9d2..0000000 --- "a/12/TP-ThanhHo\303\241-2009/bai5.pas" +++ /dev/null @@ -1,112 +0,0 @@ -uses - sortnfind; - -var - f: text; - rect: array of boolean; - mem: array of intar; - m, n: byte; - tmp, i, idx0, idx1: smallint; - - -function locate(x: smallint): smallint; - var - i: smallint; - - begin - for i := 0 to length(mem) - 1 do - if binin(mem[i], x) then - exit(i) - end; - - -procedure mv( - src: intar; - var dest: intar -); - - var - lendest, lensrc, i: smallint; - - begin - lendest := length(dest); - lensrc := length(src); - setlength(dest, lendest + lensrc); - - for i := 0 to lensrc - 1 do - dest[i + lendest] := src[i]; - - setlength(src, 0); - qsort(dest) - end; - - -begin - assign(f, 'BAI5.INP'); - reset(f); - readln(f, m, n); - setlength(rect, m * n); - - for i := 0 to m * n - 1 do - begin - read(f, tmp); - - if tmp = 0 then - rect[i] := true - else - rect[i] := false - end; - close(f); - - setlength(mem, 0); - - for i := 0 to m * n - 1 do - if rect[i] then - begin - idx0 := -1; - idx1 := -1; - - if (i > 0) and rect[i - 1] then - idx0 := locate(i - 1); - - if (i >= n) and rect[i - n] then - if idx0 = -1 then - idx0 := locate(i - n) - else - begin - tmp := locate(i - n); - - if tmp < idx0 then - begin - idx1 := idx0; - idx0 := tmp - end - else if tmp > idx0 then - idx1 := tmp - end; - - if idx0 + idx1 = -2 then - begin - setlength(mem, length(mem) + 1); - setlength(mem[length(mem) - 1], 1); - mem[length(mem) - 1][0] := i; - continue - end; - - setlength(mem[idx0], length(mem[idx0]) + 1); - mem[idx0][length(mem[idx0]) - 1] := i; - - if idx1 > 0 then - mv(mem[idx1], mem[idx0]) - end; - - tmp := 0; - for i := 0 to length(mem) - 1 do - if length(mem[i]) > tmp then - tmp := length(mem[i]); - - assign(f, 'BAI5.OUT'); - rewrite(f); - writeln(f, tmp); - close(f) -end. -- cgit 1.4.1