diff options
Diffstat (limited to '2ndary/12/TP-HN-2008/R1/BL4.pas')
-rw-r--r-- | 2ndary/12/TP-HN-2008/R1/BL4.pas | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/2ndary/12/TP-HN-2008/R1/BL4.pas b/2ndary/12/TP-HN-2008/R1/BL4.pas new file mode 100644 index 0000000..c552b0d --- /dev/null +++ b/2ndary/12/TP-HN-2008/R1/BL4.pas @@ -0,0 +1,62 @@ +var + f: text; + n, i: int16; + a, b: array of int32; + + +procedure swp(var x, y: int32); + var + tmp: int32; + + begin + tmp := x; + x := y; + y := tmp + end; + + +procedure qsort(l, h: int16); + var + i, j: int16; + tmp: int32; + + begin + i := l; + j := h; + tmp := a[(l + h) div 2]; + + repeat + while a[i] < tmp do + inc(i); + while a[j] > tmp do + dec(j); + + if i <= j then + begin + swp(a[i], a[j]); + swp(b[i], b[j]); + inc(i); + dec(j) + end; + until i > j; + + if l < j then + qsort(l, j); + if i < h then + qsort(i, h) + end; + + +begin + assign(f, 'CLB.IN'); + reset(f); + readln(f, n); + setlength(a, n); + setlength(b, n); + for i := 0 to n - 1 do + readln(f, a[i], b[i]); + close(f); + qsort(0, n - 1); + for i := 0 to n - 1 do + writeln(a[i], ' ', b[i]) +end. |