about summary refs log tree commit diff
path: root/2ndary/12/TP-HN-2008/R1/BL4.pas
diff options
context:
space:
mode:
Diffstat (limited to '2ndary/12/TP-HN-2008/R1/BL4.pas')
-rw-r--r--2ndary/12/TP-HN-2008/R1/BL4.pas62
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.