about summary refs log tree commit diff
path: root/tht/B/QG-2014
diff options
context:
space:
mode:
authorNguyễn Gia Phong <mcsinyx@disroot.org>2020-06-06 21:33:13 +0700
committerNguyễn Gia Phong <mcsinyx@disroot.org>2020-06-06 21:33:13 +0700
commit2f674dc80f0382f1c3178f435714960734dc9d3c (patch)
tree2abba7e4ec72bd16f58f7375126144d3fd9f4bca /tht/B/QG-2014
parentb2d80610db6beda38573890ed169815e495bc663 (diff)
downloadcp-2f674dc80f0382f1c3178f435714960734dc9d3c.tar.gz
Reorganize stuff from secondary school
Diffstat (limited to 'tht/B/QG-2014')
-rw-r--r--tht/B/QG-2014/DIC.DAT8
-rw-r--r--tht/B/QG-2014/GIAODIEM.TXT10
-rw-r--r--tht/B/QG-2014/README.md188
-rw-r--r--tht/B/QG-2014/XEPHINH1.TXT6
-rw-r--r--tht/B/QG-2014/XEPHINH2.TXT8
-rw-r--r--tht/B/QG-2014/XEPHINH3.TXT7
-rw-r--r--tht/B/QG-2014/XEPHINH4.TXT15
-rw-r--r--tht/B/QG-2014/XEPHINH5.TXT15
-rw-r--r--tht/B/QG-2014/dic.pp96
-rw-r--r--tht/B/QG-2014/giaodiem.c29
-rw-r--r--tht/B/QG-2014/giaodiem_img/example.pngbin19933 -> 0 bytes
-rw-r--r--tht/B/QG-2014/giaodiem_img/piece1.pngbin28315 -> 0 bytes
-rw-r--r--tht/B/QG-2014/giaodiem_img/piece2.pngbin28719 -> 0 bytes
-rw-r--r--tht/B/QG-2014/giaodiem_img/piece3.pngbin26048 -> 0 bytes
-rw-r--r--tht/B/QG-2014/guess.pas106
-rw-r--r--tht/B/QG-2014/sample.pas21
-rw-r--r--tht/B/QG-2014/xephinh.pas270
17 files changed, 0 insertions, 779 deletions
diff --git a/tht/B/QG-2014/DIC.DAT b/tht/B/QG-2014/DIC.DAT
deleted file mode 100644
index af9c850..0000000
--- a/tht/B/QG-2014/DIC.DAT
+++ /dev/null
@@ -1,8 +0,0 @@
-cat
-can
-mic
-man
-tiger
-tac
-hello
-world
diff --git a/tht/B/QG-2014/GIAODIEM.TXT b/tht/B/QG-2014/GIAODIEM.TXT
deleted file mode 100644
index ba0199e..0000000
--- a/tht/B/QG-2014/GIAODIEM.TXT
+++ /dev/null
@@ -1,10 +0,0 @@
-1
-35
-210
-330
-1744
-210
-358
-1001
-1312
-1007
diff --git a/tht/B/QG-2014/README.md b/tht/B/QG-2014/README.md
deleted file mode 100644
index 567e309..0000000
--- a/tht/B/QG-2014/README.md
+++ /dev/null
@@ -1,188 +0,0 @@
-# ĐỀ THI BẢNG B – TRUNG HỌC CƠ SỞ
-
-HỘI THI TIN HỌC TRẺ TOÀN QUỐC LẦN THỨ XX – 2016
-
-Thời gian làm bài 150 phút, không kể thời gian phát đề
-
-## Tổng quan bài thi
-
-|  Tên bài  | Giới hạn thời gian | Số điểm |
-| --------- | :----------------: | :-----: |
-| Giao điểm |      Không có      |    20   |
-| Xếp hình  |      Không có      |    40   |
-| Từ điển   |      2 giây        |    40   |
-
-## Giao điểm
-
-Mùa hè 2014, những người ngoài hành tinh đã có một chuyến viếng thăm trái đất.
-Họ đến bằng đĩa bay và đã chọn một cánh đồng của Việt Nam để hạ cánh. Đĩa bay
-có dạng hình tròn với N chân đế nên mỗi đĩa bay đã để lại trên cánh đồng một
-đường tròn với có N điểm trên đường tròn đó. Khi đĩa bay hạ xuống, các chân đế
-của một đĩa bay đã phát tia lazer để kết nối với nhau để lại các đường cháy
-trên cánh đồng. Ngay sáng hôm sau các nhà khoa học đã đến và dự đinh sẽ cắm tại
-mỗi giao điểm của các đường cháy bên trong mỗi đường tròn một lá cờ. Họ cũng
-phát hiện ra rằng, trong mỗi đường tròn không có 3 đường cháy nào cắt nhau tại
-cùng một điểm (trừ các điểm chân đế của đĩa bay). Vấn đề đặt ra là với mỗi
-đường tròn, họ đã phải sử dụng bao nhiêu lá cờ. Các bạn hãy tính giúp các nhà
-khoa học nhé, đó chính là một con số quan trọng trong quá trình nghiên cứu sự
-hiện diện của người ngoài trái đất tại Việt Nam.
-
-Ví dụ, với hình dưới là đĩa bay có 5 chân đế tương ứng với N=5. Các đường cháy
-để lại giao nhau tại 5 điểm.
-
-![](http://www.bryanray.name/wordpress/wp-content/uploads/pentacle.png)
-
-Các bạn sẽ nhận được một báo cáo gồm có 10 dòng tương ứng với 10 số N khác nhau
-là số lượng chân đế trên 10 chiếc đĩa bay khác nhau. Bạn cần tạo file
-`GIAODIEM.TXT` gồm 10 dòng, mỗi dòng ghi một số nguyên duy nhất là kết quả tìm
-được, chính là số lá cờ cần sử dụng để cắm tại các giao điểm bên trong hình
-tròn. Vì số lá cờ sẽ là rất lớn nên các nhà khoa học chỉ cần các bạn đưa ra
-phần dư của số lượng lá cờ cho 2014.
-
-| Test |        N         |
-| ---- | ---------------: |
-|   1  |                4 |
-|   2  |                7 |
-|   3  |               10 |
-|   4  |               11 |
-|   5  |             7777 |
-|   6  |            88888 |
-|   7  |       1234567890 |
-|   8  |       9999999999 |
-|   9  |   12345678912345 |
-|  10  | 2014201420142014 |
-
-## Xếp hình
-
-Trong quá trình nghiên cứu trên cánh đồng, các nhà khoa học còn phát hiện ra
-một điều thú vị khác.  Người ngoài hành tinh đã để lại một số hộp quà. Mỗi hộp
-quà chứa một bộ ghép hình với một bảng nền có kích thước M×N ô vuông 1×1. Trong
-hộp có một số miếng ghép thuộc ba loại dưới đây với số lượng khác nhau:
-
-![](giaodiem_img/piece1.png)
-![](giaodiem_img/piece2.png)
-![](giaodiem_img/piece3.png)
-
-Người ngoài hành tinh để lại lời nhắn rằng họ sẽ trở lại nếu các bạn xếp được
-các miếng ghép không chồng lên nhau và phủ kín bảng nền. Các bạn có thể xoay
-hoặc lật mặt các miếng ghép. Các bạn trong hội thi năm nay hãy giúp các nhà
-nghiên cứu nhé.
-
-Các bạn sẽ nhận được các số M, N, A, B, C của 5 hộp quà trong bảng sau:
-
-| Hộp quà |  M  |  N  |  A  |  B  |  C  |
-| :-----: | --- | --- | --- | --- | --- |
-|    1    |  6  |  5  |  4  |  2  |  2  |
-|    2    |  8  | 12  |  8  | 18  |  0  |
-|    3    |  7  | 13  | 12  |  5  |  7  |
-|    4    | 15  | 10  | 20  | 10  | 10  |
-|    5    | 15  | 30  |  0  | 50  | 50  |
-
-Các số trên một dòng tương ứng là kích thước M×N của hình chữ nhật , A là số
-miếng ghép loại 1, B là số miếng ghép loại 2 và C là số miếng ghép loại 3 của
-các hộp quà. Các bạn cần đưa ra 5 file output tương ứng với từng hộp quà là
-`XEPHINH1.TXT`, `XEPHINH2.TXT`, `XEPHINH3.TXT`, `XEPHINH4.TXT`, `XEPHINH5.TXT`.
-Ở mỗi file output các bạn cần mô tả 1 cách xếp hình là một ma trận 2 chiều M×N
-trên M dòng, mỗi dòng N số nguyên dương, các số trên một dòng cách nhau bởi một
-dấu cách. Mỗi miếng ghép khi được sử dụng cần được đánh số thứ tự khác nhau sao
-cho không có 2 miếng ghép nào có cùng một số thứ tự. Số ở dòng i cột j là một
-số nguyên dương mô tả số thứ tự của hình phủ nó.
-
-Ví dụ: ta có bảng nền kích thước 3× 7 và 3 miếng ghép loại 1, 3 miếng ghép loại
-2, 0 miếng ghép loại 3 thì ta có thể ghép như sau:
-
-![](giaodiem_img/example.png)
-
-Có thể mô tả lại bằng ma trận ở file output tương ứng với hình bên phải như sau:
-
-    1 2 3 4 4 4 6
-    1 2 3 3 3 4 6
-    1 2 5 5 5 6 6
-
-Hoặc cách đánh số thứ tự vùng khác như sau:
-
-    6 4 1 2 2 2 5
-    6 4 1 1 1 2 5
-    4 6 3 3 3 5 5
-
-Cả 2 cách trên đều được chấp nhận.
-
-## Từ điển
-
-Biết được việc các thí sinh thi Tin học trẻ giải được bài `XEPHINH`, người
-ngoài hành tinh rất yêu quý đất nước Việt Nam. Họ quyết định trở lại để đến
-thăm chúng ta. Tuy nhiên vì ngôn ngữ bất đồng nên các em không hiểu những người
-ngoài hành tinh muốn nói gì. Vì vậy các em phải mang theo từ điển của mình ra
-để cho họ xem. Sau đó các em sẽ đoán xem là họ muốn nói đến từ nào trong từ
-điển. Từ điển cũng chỉ gồm 26 chữ cái thường từ *a* đến *z*. Tuy nhiên vì không
-thể giải thích được với nhau nên hiện tại bước đầu giao tiếp vẫn là đoán từ và
-các câu hỏi để đoán từ phải vô cùng đơn giản.
-
-Người ngoài hành tinh chỉ có thể hiểu các câu hỏi sau:
-
-1. Có bao nhiêu kí tự C trong từ đó?
-2. Kí tự tại vị trí X là kí tự gì?
-
-Nhiệm vụ của các bạn là viết một chương trình `GUESS.PAS`, sử dụng các hàm
-trong thư viện `DIC.PP` để thực hiện khảo sát từ điển trong file dữ liệu vào
-`DIC.DAT` và đưa ra từ mà người ngoài hành tinh muốn nói là từ gì.  File
-`DIC.DAT` được cung cấp cho các bạn mô tả từ điển chỉ gồm danh sách các từ đôi
-một khác nhau. Trong đó mỗi từ nằm trên một dòng và chỉ gồm các chữ cái in
-thường từ *a* đến *z*. Số lượng từ trong file `DIC.DAT` tối đa là
-10<sup>6</sup> từ và mỗi từ dài tối đa 50 kí tự.
-
-Chương trình `GUESS.PAS` của bạn phải khai báo sử dụng thư viện `DIC.PP` bằng cú pháp:
-
-    Uses dic;
-
-Các hàm và thủ tục được cung cấp trong thư viện `DIC.PP`:
-
-* `function count_char(C: char): longint;`
-    * Trả về số lượng kí tự C trong từ cần tìm.
-    * Chi phí sử dụng hàm `count_char()` 1 lần là 1 đơn vị.
-
-* `function get_char_at_pos(X: longint): char;`
-    * Trả về kí tự tại vị trí X trong từ cần tìm.
-    * Nếu X lớn hơn độ dài của từ, hàm sẽ trả về kí tự *#*.
-    * Chi phí sử dụng hàm `get_char_at_pos()` 1 lần là 10 đơn vị.
-* `Procedure answer(s:string);`
-    * Thủ tục `answer()` được dùng để trả về kết quả - là từ mà em đã xác định
-      được.
-    * Chi phí sử dụng thủ tục `answer()` là 0 đơn vị.
-    * Chương trình bắt buộc phải gọi thủ tục `answer()` một lần duy nhất, nếu
-      không sẽ bị 0 điểm. Thủ tục này khi được gọi sẽ tự động thoát chương
-      trình bằng câu lệnh `halt`.
-
-Với mỗi test, nếu chương trình của bạn gọi thủ tục `answer()` với đáp án không
-chính xác, chạy quá thời gian quy định, sử dụng quá 1000 đơn vị hoặc gặp các
-lỗi dẫn tới dừng chương trình, bài làm sẽ nhận 0 điểm cho test đó.
-
-Số điểm cho mỗi test sẽ giảm dần khi chi phí bạn sử dụng tăng lên.
-
-### Ví dụ
-
-Bộ từ điển có các từ sau:
-
-    cat
-    can
-    mic
-    man
-    tiger
-    hello
-    world
-
-Từ người ngoài hành tinh muốn nói là *cat*.
-
-| Các thủ tục được gọi | Giá trị trả về |             Giải thích              |
-| -------------------- | :------------: | ----------------------------------- |
-| `get_char_at_pos(4)` |        #       | 4 vượt quá độ dài của từ *cat* là 3 |
-| `count_char('c')`    |        1       | Trong từ *cat* có 1 kí tự *c*       |
-| `count_char('a')`    |        1       | Trong từ *cat* có 1 kí tự *a*       |
-| `count_char('n')`    |        0       | Trong từ *cat* không có kí tự *n*   |
-| `answer('cat')`      |                | Bạn trả lời đúng với chi phí là 13  |
-
-### Ghi chú
-
-Trên máy làm bài của các bạn đã được cung cấp 3 file: `DIC.PP`, `DIC.DAT` và
-`SAMPLE.PAS`. Bạn có thể tham khảo cách sử dụng `DIC.PP` và `DIC.DAT` trong
-file `SAMPLE.PAS`. File `DIC.DAT` bạn nhận được là từ điển ví dụ.
diff --git a/tht/B/QG-2014/XEPHINH1.TXT b/tht/B/QG-2014/XEPHINH1.TXT
deleted file mode 100644
index 0b884be..0000000
--- a/tht/B/QG-2014/XEPHINH1.TXT
+++ /dev/null
@@ -1,6 +0,0 @@
-1 2 3 3 3
-1 2 4 4 4
-1 2 5 5 4
-6 7 7 5 8
-6 7 5 5 8
-6 7 7 8 8
diff --git a/tht/B/QG-2014/XEPHINH2.TXT b/tht/B/QG-2014/XEPHINH2.TXT
deleted file mode 100644
index 8dc8e6a..0000000
--- a/tht/B/QG-2014/XEPHINH2.TXT
+++ /dev/null
@@ -1,8 +0,0 @@
-1 2 3 4 5 6 7 8 9 9 10 10
-1 2 3 4 5 6 7 8 9 11 10 12
-1 2 3 4 5 6 7 8 9 11 10 12
-13 13 14 15 15 15 16 16 11 11 12 12
-13 17 14 14 14 15 16 18 19 19 19 20
-13 17 17 17 21 21 16 18 18 18 19 20
-22 23 23 23 21 24 25 25 25 26 20 20
-22 22 22 23 21 24 24 24 25 26 26 26
diff --git a/tht/B/QG-2014/XEPHINH3.TXT b/tht/B/QG-2014/XEPHINH3.TXT
deleted file mode 100644
index bdf97ba..0000000
--- a/tht/B/QG-2014/XEPHINH3.TXT
+++ /dev/null
@@ -1,7 +0,0 @@
-1 2 3 4 5 6 7 8 9 10 11 11 11
-1 2 3 4 5 6 7 8 9 10 12 12 11
-1 2 3 4 5 6 7 8 9 10 12 13 13
-14 14 14 15 15 15 16 16 17 17 12 12 13
-14 18 18 18 19 20 20 16 17 21 21 21 13
-22 18 22 18 19 20 16 16 17 21 23 21 23
-22 22 22 19 19 20 20 24 24 24 23 23 23
diff --git a/tht/B/QG-2014/XEPHINH4.TXT b/tht/B/QG-2014/XEPHINH4.TXT
deleted file mode 100644
index 497341c..0000000
--- a/tht/B/QG-2014/XEPHINH4.TXT
+++ /dev/null
@@ -1,15 +0,0 @@
-1 2 3 4 5 5 6 6 6 7
-1 2 3 4 5 8 6 8 6 7
-1 2 3 4 5 8 8 8 7 7
-9 10 11 12 13 13 14 14 14 15
-9 10 11 12 13 16 14 16 14 15
-9 10 11 12 13 16 16 16 15 15
-17 18 19 20 21 21 22 22 22 23
-17 18 19 20 21 24 22 24 22 23
-17 18 19 20 21 24 24 24 23 23
-25 26 27 28 29 29 30 30 30 31
-25 26 27 28 29 32 30 32 30 31
-25 26 27 28 29 32 32 32 31 31
-33 34 35 36 37 37 38 38 38 39
-33 34 35 36 37 40 38 40 38 39
-33 34 35 36 37 40 40 40 39 39
diff --git a/tht/B/QG-2014/XEPHINH5.TXT b/tht/B/QG-2014/XEPHINH5.TXT
deleted file mode 100644
index 550e630..0000000
--- a/tht/B/QG-2014/XEPHINH5.TXT
+++ /dev/null
@@ -1,15 +0,0 @@
-1 1 2 2 3 3 21 21 22 22 23 23 41 41 42 42 43 43 61 61 62 62 63 63 81 81 82 82 83 83
-1 4 2 5 5 3 21 24 22 25 25 23 41 44 42 45 45 43 61 64 62 65 65 63 81 84 82 85 85 83
-1 4 2 2 5 3 21 24 22 22 25 23 41 44 42 42 45 43 61 64 62 62 65 63 81 84 82 82 85 83
-4 4 6 7 5 7 24 24 26 27 25 27 44 44 46 47 45 47 64 64 66 67 65 67 84 84 86 87 85 87
-8 8 6 7 7 7 28 28 26 27 27 27 48 48 46 47 47 47 68 68 66 67 67 67 88 88 86 87 87 87
-8 6 6 9 9 9 28 26 26 29 29 29 48 46 46 49 49 49 68 66 66 69 69 69 88 86 86 89 89 89
-8 8 10 10 10 9 28 28 30 30 30 29 48 48 50 50 50 49 68 68 70 70 70 69 88 88 90 90 90 89
-11 11 10 12 10 12 31 31 30 32 30 32 51 51 50 52 50 52 71 71 70 72 70 72 91 91 90 92 90 92
-11 13 13 12 12 12 31 33 33 32 32 32 51 53 53 52 52 52 71 73 73 72 72 72 91 93 93 92 92 92
-11 11 13 14 14 14 31 31 33 34 34 34 51 51 53 54 54 54 71 71 73 74 74 74 91 91 93 94 94 94
-15 15 13 16 16 14 35 35 33 36 36 34 55 55 53 56 56 54 75 75 73 76 76 74 95 95 93 96 96 94
-15 17 17 16 18 18 35 37 37 36 38 38 55 57 57 56 58 58 75 77 77 76 78 78 95 97 97 96 98 98
-15 15 17 16 16 18 35 35 37 36 36 38 55 55 57 56 56 58 75 75 77 76 76 78 95 95 97 96 96 98
-19 17 17 20 18 18 39 37 37 40 38 38 59 57 57 60 58 58 79 77 77 80 78 78 99 97 97 100 98 98
-19 19 19 20 20 20 39 39 39 40 40 40 59 59 59 60 60 60 79 79 79 80 80 80 99 99 99 100 100 100
diff --git a/tht/B/QG-2014/dic.pp b/tht/B/QG-2014/dic.pp
deleted file mode 100644
index 716249d..0000000
--- a/tht/B/QG-2014/dic.pp
+++ /dev/null
@@ -1,96 +0,0 @@
-unit dic;
-interface
-  function count_char(c: char): longint;
-  function get_char_at_pos(x: longint): char;
-  procedure answer(s: string);
-
-implementation
-var
-  secret_word: string;
-  words: array [1..1000000] of string;
-  total_cost, n: longint;
-
-procedure answer(s: string);
-begin
-  if s = secret_word then
-  begin
-    writeln('Chuc mung ban da tim ra dap an chinh xac la "', s, '"');
-    writeln('Chi phi ban da su dung la ', total_cost);
-  end
-  else
-  begin
-    writeln('Dap an ban dua ra la "', s, '"');
-    writeln('Dap an chinh xac la "', secret_word, '"');
-  end;
-  halt;
-end;
-
-procedure cost_limit_exceed;
-begin
-  writeln('Chi phi ban da su dung vuot qua chi phi toi da cho phep');
-  halt;
-end;
-
-function count_char(c: char): longint;
-var
-  i, res: longint;
-begin
-  total_cost := total_cost + 1;
-  if (total_cost > 1000) then
-    cost_limit_exceed;
-  res := 0;
-  for i := 1 to length(secret_word) do
-    if secret_word[i] = c then
-      inc(res);
-  exit(res);
-end;
-
-function get_char_at_pos(x: longint): char;
-begin
-  total_cost := total_cost + 10;
-  if (total_cost > 1000) then
-    cost_limit_exceed;
-  if (x < 1) or (x > length(secret_word)) then
-    exit('#');
-  exit(secret_word[x]);
-end;
-
-procedure check_secret_word;
-var
-  f: text;
-  i: longint;
-  ok: boolean;
-begin
-  assign(f, 'DIC.DAT');
-  reset(f);
-  while not seekeof(f) do
-  begin
-    inc(n);
-    readln(f, words[n]);
-  end;
-  close(f);
-  ok := false;
-  for i := 1 to n do
-    if words[i] = secret_word then ok := true;
-  if not ok then
-  begin
-    writeln('Du lieu duoc khoi tao khong chinh xac. Dap an can tim khong nam trong tu dien');
-    halt;
-  end;
-end;
-
-procedure init;
-begin
-  writeln;
-  writeln('     TU DIEN     ');
-  writeln('*****************');
-  writeln;
-
-  secret_word := 'cat';
-  total_cost := 0;
-  check_secret_word;
-end;
-
-initialization
-  init;
-end.
diff --git a/tht/B/QG-2014/giaodiem.c b/tht/B/QG-2014/giaodiem.c
deleted file mode 100644
index 78ca9b2..0000000
--- a/tht/B/QG-2014/giaodiem.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <stdio.h>
-
-const long long TESTS[] = {4, 7, 10, 11, 7777, 8888888, 1234567890, 9999999999,
-                           12345678912345, 2014201420142014};
-
-int main()
-{
-	char i, j, k, divisor;
-	long long n, p;
-	FILE *f = fopen("GIAODIEM.TXT", "w");
-
-	for (i = 0; i < 10; i++) {
-		divisor = 24;
-		p = 1;
-		for (j = 0; j < 4; j++) {
-			n = TESTS[i] - j;
-			for (k = 2; k < 4; k++) {
-				while (!(n % k + divisor % k)) {
-					n /= k;
-					divisor /= k;
-				}
-			}
-			p *= n % 2014;
-		}
-		fprintf(f, "%d\n", p % 2014);
-	}
-	fclose(f);
-	return 0;
-}
diff --git a/tht/B/QG-2014/giaodiem_img/example.png b/tht/B/QG-2014/giaodiem_img/example.png
deleted file mode 100644
index 2af578f..0000000
--- a/tht/B/QG-2014/giaodiem_img/example.png
+++ /dev/null
Binary files differdiff --git a/tht/B/QG-2014/giaodiem_img/piece1.png b/tht/B/QG-2014/giaodiem_img/piece1.png
deleted file mode 100644
index a658789..0000000
--- a/tht/B/QG-2014/giaodiem_img/piece1.png
+++ /dev/null
Binary files differdiff --git a/tht/B/QG-2014/giaodiem_img/piece2.png b/tht/B/QG-2014/giaodiem_img/piece2.png
deleted file mode 100644
index 7d467ac..0000000
--- a/tht/B/QG-2014/giaodiem_img/piece2.png
+++ /dev/null
Binary files differdiff --git a/tht/B/QG-2014/giaodiem_img/piece3.png b/tht/B/QG-2014/giaodiem_img/piece3.png
deleted file mode 100644
index 2aa00a0..0000000
--- a/tht/B/QG-2014/giaodiem_img/piece3.png
+++ /dev/null
Binary files differdiff --git a/tht/B/QG-2014/guess.pas b/tht/B/QG-2014/guess.pas
deleted file mode 100644
index af39434..0000000
--- a/tht/B/QG-2014/guess.pas
+++ /dev/null
@@ -1,106 +0,0 @@
-uses dic;
-
-type
-  dic_t = array of string;
-  coun_t = array['a'..'z'] of byte;
-
-var
-  f: text;
-  dict, new_dict: array[0..999999] of string;
-  chars: array of coun_t;
-  count: coun_t;
-  enum: array of record i, n: byte end;
-  len, new_len: longint;
-  i, j: byte;
-  c: char;
-
-
-procedure swapbyte(var x, y: byte);
-  var
-    tmp: byte;
-
-  begin
-    tmp := x;
-    x := y;
-    y := tmp
-  end;
-
-
-
-begin
-  len := 0;
-  assign(f, 'DIC.DAT');
-  reset(f);
-  while not eof(f) do
-    begin
-      readln(f, dict[len]);
-      inc(len)
-    end;
-  close(f);
-
-  setlength(chars, len);
-  for i := 0 to len - 1 do
-    begin
-      for c := 'a' to 'z' do
-        chars[i][c] := 0;
-      for c in dict[i] do
-        inc(chars[i][c])
-    end;
-  for c := 'a' to 'z' do
-    count[c] := count_char(c);
-
-  new_len := 0;
-  for i := 0 to len - 1 do
-    begin
-      for c := 'a' to '{' do
-        if chars[i][c] <> count[c] then
-          break;
-      if c = '{' then
-        begin
-          new_dict[new_len] := dict[i];
-          inc(new_len)
-        end
-    end;
-
-  setlength(enum, length(new_dict[0]));
-  for i := 0 to length(enum) - 1 do
-    begin
-      enum[i].i := i + 1;
-      enum[i].n := 0;
-      for c := 'a' to 'z' do
-        count[c] := 0;
-      for j := 0 to new_len - 1 do
-        inc(count[new_dict[j][i + 1]]);
-      for c := 'a' to 'z' do
-        if count[c] > 0 then
-          inc(enum[i].n)
-    end;
-
-  for i := 0 to length(enum) - 2 do
-    for j := i + 1 to length(enum) - 1 do
-      if enum[i].n < enum[j].n then
-        begin
-          swapbyte(enum[i].n, enum[j].n);
-          swapbyte(enum[i].i, enum[j].i)
-        end;
-
-  j := 0;
-  while new_len > 1 do
-    begin
-      len := new_len;
-      for i := 0 to len - 1 do
-        dict[i] := new_dict[i];
-
-      c := get_char_at_pos(enum[j].i);
-      new_len := 0;
-      for i := 0 to len - 1 do
-        if dict[i][enum[j].i] = c then
-          begin
-            new_dict[new_len] := dict[i];
-            inc(new_len)
-          end;
-      inc(j)
-    end;
-
-  answer(new_dict[0])
-end.
diff --git a/tht/B/QG-2014/sample.pas b/tht/B/QG-2014/sample.pas
deleted file mode 100644
index c8b5e17..0000000
--- a/tht/B/QG-2014/sample.pas
+++ /dev/null
@@ -1,21 +0,0 @@
-uses dic;
-
-var
-  answer1: char;
-  answer2, answer3, answer4: longint;
-
-begin
-  answer1 := get_char_at_pos(4);
-  writeln('Vi tri thu 4 cua xau can tim la: ', answer1);
-
-  answer2 := count_char('c');
-  writeln('So luong ki tu c trong tu can tim la: ', answer2);
-
-  answer3 := count_char('a');
-  writeln('So luong ki tu a trong tu can tim la: ', answer3);
-
-  answer4 := count_char('n');
-  writeln('So luong ki tu n trong tu can tim la: ', answer4);
-
-  answer('can');
-end.
diff --git a/tht/B/QG-2014/xephinh.pas b/tht/B/QG-2014/xephinh.pas
deleted file mode 100644
index d428302..0000000
--- a/tht/B/QG-2014/xephinh.pas
+++ /dev/null
@@ -1,270 +0,0 @@
-uses math;
-
-type
-  gift_t = record
-    filename: string;
-    m, n, a, b, c: byte
-  end;
-  piece_t = array[1..3, 1..3] of boolean;
-  board_t = array[1..15, 1..30] of byte;
-
-const
-  gifts: array[1..5] of gift_t = (
-    (filename: 'XEPHINH1.TXT'; m: 6; n: 5; a: 4; b: 2; c: 2),
-    (filename: 'XEPHINH2.TXT'; m: 8; n: 12; a: 8; b: 18; c: 0),
-    (filename: 'XEPHINH3.TXT'; m: 7; n: 13; a: 12; b: 5; c: 7),
-    (filename: 'XEPHINH4.TXT'; m: 3; n: 10; a: 4; b: 2; c: 2),
-    (filename: 'XEPHINH5.TXT'; m: 15; n: 6; a: 0; b: 10; c: 10)
-  );
-  pieces: array[1..3] of piece_t = (
-    ((false, true, false), (false, true, false), (false, true, false)),
-    ((false, true, true), (false, true, false), (false, true, false)),
-    ((false, true, true), (false, true, false), (false, true, true))
-  );
-
-var
-  f: text;
-  i, m, n, a, b, c: byte;
-  init_board: board_t;
-  done: boolean;
-
-
-function divide(dividend, divisor: smallint): smallint;
-  begin
-    if dividend mod divisor = 0 then
-      exit(dividend div divisor);
-    divide := dividend div divisor + 1
-  end;
-
-
-function modulo(dividend, divisor: smallint): smallint;
-  begin
-    if dividend mod divisor = 0 then
-      exit(divisor);
-    modulo := dividend mod divisor
-  end;
-
-
-function rotate(
-  piece: piece_t;
-  quarter: byte
-): piece_t;
-
-  var
-    i, j: byte;
-
-  begin
-    if quarter = 0 then
-      exit(piece);
-    for i := 1 to 3 do
-      for j := 1 to 3 do
-        rotate[i][j] := piece[j][4 - i];
-    exit(rotate(rotate, pred(quarter)))
-  end;
-
-
-function flip(piece: piece_t): piece_t;
-  var
-    i, j: byte;
-
-  begin
-    for i := 1 to 3 do
-      for j := 1 to 3 do
-        flip[i][j] := piece[4 - i][j]
-  end;
-
-
-function putable(
-  board: board_t;
-  y, x: byte;
-  piece: piece_t
-): boolean;
-
-  var
-    yoff, xoff, i, j: byte;
-
-  begin
-    if not piece[1][1] then
-      if piece[1][2] then
-        begin
-          yoff := 1;
-          xoff := 2
-        end
-      else
-        begin
-          yoff := 2;
-          xoff := 1
-        end
-    else
-      begin
-        yoff := 1;
-        xoff := 1
-      end;
-
-    for i := 1 to 3 do
-      for j := 1 to 3 do
-        if not piece[i][j] then
-          continue
-        else if not inrange(y + i - yoff, 1, m) or
-                not inrange(x + j - xoff, 1, n) or
-                (board[y + i - yoff][x + j - xoff] > 0) then
-          exit(false);
-    putable := true
-  end;
-
-
-function put(
-  board: board_t;
-  y, x: byte;
-  piece: piece_t;
-  no: byte
-): board_t;
-
-  var
-    yoff, xoff, i, j: byte;
-
-  begin
-    if not piece[1][1] then
-      if piece[1][2] then
-        begin
-          yoff := 1;
-          xoff := 2
-        end
-      else
-        begin
-          yoff := 2;
-          xoff := 1
-        end
-    else
-      begin
-        yoff := 1;
-        xoff := 1
-      end;
-
-    for i := 1 to 3 do
-      for j := 1 to 3 do
-        if piece[i][j] then
-           board[y + i - yoff][x + j - xoff] := no;
-    exit(board)
-  end;
-
-
-procedure solve(
-  board: board_t;
-  position: smallint;
-  no: byte
-);
-
-  var
-    y, x: smallint;
-    i: byte;
-
-  begin
-    if done then
-      exit;
-    while (board[divide(position, n)][modulo(position, n)] > 0) and
-          (position <= m * n) do
-      inc(position);
-    if position > m * n then
-      begin
-        for y := 1 to m do
-          begin
-            for x := 1 to n - 1 do
-              write(f, board[y][x], ' ');
-            writeln(f, board[y][n])
-          end;
-        done := true;
-        exit
-      end;
-
-    y := divide(position, n);
-    x := modulo(position, n);
-    for i := 0 to 1 do
-      if (a > 0) and
-         putable(board, y, x, rotate(pieces[1], i)) then
-        begin
-          dec(a);
-          solve(put(board, y, x, rotate(pieces[1], i), no), position, no + 1);
-          inc(a)
-        end;
-    for i := 0 to 3 do
-      if (b > 0) and
-         putable(board, y, x, rotate(pieces[2], i)) then
-        begin
-          dec(b);
-          solve(put(board, y, x, rotate(pieces[2], i), no), position, no + 1);
-          inc(b)
-        end;
-    for i := 1 to 3 do
-      if (b > 0) and
-         putable(board, y, x, rotate(flip(pieces[2]), i)) then
-        begin
-          dec(b);
-          solve(put(board, y, x, rotate(flip(pieces[2]), i), no), position, no + 1);
-          inc(b)
-        end;
-    for i := 0 to 3 do
-      if (c > 0) and
-         putable(board, y, x, rotate(pieces[3], i)) then
-        begin
-          dec(c);
-          solve(put(board, y, x, rotate(pieces[3], i), no), position, no + 1);
-          inc(c)
-        end;
-  end;
-
-
-begin
-  for i := 1 to 5 do
-    begin
-      assign(f, gifts[i].filename);
-      rewrite(f);
-      m := gifts[i].m;
-      n := gifts[i].n;
-      for a := 1 to m do
-        for b := 1 to n do
-          init_board[a][b] := 0;
-      a := gifts[i].a;
-      b := gifts[i].b;
-      c := gifts[i].c;
-      done := false;
-      solve(init_board, 1, 1);
-      close(f)
-    end;
-
-  assign(f, 'XEPHINH4.TXT');
-  reset(f);
-  for m := 1 to 3 do
-    for n := 1 to 10 do
-      read(f, init_board[m][n]);
-  close(f);
-  assign(f, 'XEPHINH4.TXT');
-  rewrite(f);
-  for a := 0 to 4 do
-    for m := 1 to 3 do
-      begin
-        for n := 1 to 9 do
-          write(f, init_board[m][n] + a * 8, ' ');
-        writeln(f, init_board[m][10] + a * 8)
-      end;
-  close(f);
-
-  assign(f, 'XEPHINH5.TXT');
-  reset(f);
-  for m := 1 to 15 do
-    for n := 1 to 6 do
-      read(f, init_board[m][n]);
-  close(f);
-  assign(f, 'XEPHINH5.TXT');
-  rewrite(f);
-  for m := 1 to 15 do
-    begin
-      for a := 0 to 3 do
-        for n := 1 to 6 do
-          write(f, init_board[m][n] + a * 20, ' ');
-      for n := 1 to 5 do
-        write(f, init_board[m][n] + 80, ' ');
-      writeln(f, init_board[m][6] + 80);
-    end;
-  close(f);
-end.