about summary refs log tree commit diff
path: root/others
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2017-01-02 20:37:59 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2017-01-02 20:37:59 +0700
commit57d767cf4e4d5b83645bda2c4e398fdd76d059e1 (patch)
tree557cc70d5dc663b5ee3bef2be4d749ddc3cfbc4c /others
parent7206ecee7579a10dd347d06b397b3790e969f8f3 (diff)
downloadcp-57d767cf4e4d5b83645bda2c4e398fdd76d059e1.tar.gz
Update others/easy20160714
Diffstat (limited to 'others')
-rw-r--r--others/easy20160714/16.c28
-rw-r--r--others/easy20160714/17.c21
-rw-r--r--others/easy20160714/18.c28
-rw-r--r--others/easy20160714/19.c26
-rw-r--r--others/easy20160714/20.c27
-rw-r--r--others/easy20160714/21.c23
-rw-r--r--others/easy20160714/22.c30
-rw-r--r--others/easy20160714/23.c33
-rw-r--r--others/easy20160714/24.c26
-rw-r--r--others/easy20160714/25.c30
-rw-r--r--others/easy20160714/26.c35
-rw-r--r--others/easy20160714/27.c41
-rw-r--r--others/easy20160714/28.c33
-rw-r--r--others/easy20160714/29.c50
-rw-r--r--others/easy20160714/30.c32
-rw-r--r--others/easy20160714/31.c34
-rw-r--r--others/easy20160714/README.md432
17 files changed, 900 insertions, 29 deletions
diff --git a/others/easy20160714/16.c b/others/easy20160714/16.c
new file mode 100644
index 0000000..33334cd
--- /dev/null
+++ b/others/easy20160714/16.c
@@ -0,0 +1,28 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <string.h>
+
+int main()
+{
+	FILE *fi = fopen("INP.TXT", "r"), *fo = fopen("OUT.TXT", "w");
+	unsigned char n, i, j, s[256], sx[256], x, y;
+
+	fscanf(fi, "%s %hhd\n", s, &n);
+
+	for (i = 0; i < n; i++)
+		if (fgetc(fi) ^ 49) {
+			fscanf(fi, " %hhd %hhd\n", &x, &y);
+			x--;
+			memmove(s + x, s + x + y, strlen(s) - x - y + 1);
+			fprintf(fo, "%s\n", s);
+		} else {
+			fscanf(fi, " %s %hhd\n", sx, &y);
+			strcpy(sx + strlen(sx), s + y);
+			strcpy(s + y, sx);
+			fprintf(fo, "%s\n", s);
+		}
+
+	fcloseall();
+
+	return 0;
+}
diff --git a/others/easy20160714/17.c b/others/easy20160714/17.c
new file mode 100644
index 0000000..edc8f1c
--- /dev/null
+++ b/others/easy20160714/17.c
@@ -0,0 +1,21 @@
+#define _GNU_SOURCE
+#include <ctype.h>
+#include <stdio.h>
+
+int main()
+{
+	FILE *fi = fopen("INP.TXT", "r"), *fo = fopen("OUT.TXT", "w");
+	char c, prevc = 32;
+
+	while ((c = fgetc(fi)) != EOF) {
+		if (prevc ^ 32)
+			fputc(isupper(c) ? c + 32 : c, fo);
+		else if (c ^ 32)
+			fputc(islower(c)) ? c - 32 : c, fo);
+		prevc = c;
+	}
+
+	fcloseall();
+
+	return 0;
+}
diff --git a/others/easy20160714/18.c b/others/easy20160714/18.c
new file mode 100644
index 0000000..26f9e28
--- /dev/null
+++ b/others/easy20160714/18.c
@@ -0,0 +1,28 @@
+#include <ctype.h>
+#include <stdio.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	char c, prevc = 100;
+	unsigned long long x = 0, y = 0;
+
+	while ((c = fgetc(f)) != EOF) {
+		if (isdigit(prevc) && !isdigit(c)) {
+			y += x;
+			x = 0;
+		} else if (isdigit(c)) {
+			x = x * 10 + c - 48;
+		}
+
+		prevc = c;
+	}
+
+	fclose(f);
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%lld\n", y);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/19.c b/others/easy20160714/19.c
new file mode 100644
index 0000000..903fc77
--- /dev/null
+++ b/others/easy20160714/19.c
@@ -0,0 +1,26 @@
+#include <stdio.h>
+#include <string.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	char x[100001], y[100001];
+	long i, m, n, r = -1;
+
+	fscanf(f, "%s %s", x, y);
+	fclose(f);
+
+	m = strlen(x);
+	n = strlen(y) - m;
+	for (i = 0; i < n; i++)
+		if (!strncmp(x, y + i, m)) {
+			r = i + 1;
+			break;
+		}
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%ld\n", r);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/20.c b/others/easy20160714/20.c
new file mode 100644
index 0000000..de2c222
--- /dev/null
+++ b/others/easy20160714/20.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include <string.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	char x[1001], y[1001], r = 0;
+	short m, n, i, j = 0, z[1000][128] = {};
+
+	fscanf(f, "%s %s", x, y);
+	fclose(f);
+
+	m = strlen(x);
+	n = strlen(y);
+
+	for (i = 0; i < n; i++)
+		if ((y[i] == x[j]) && (++j == m)) {
+			r = 1;
+			break;
+		}
+
+	f = fopen("OUT.TXT", "w");
+	fputs(r ? "YES\n" : "NO\n", f);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/21.c b/others/easy20160714/21.c
new file mode 100644
index 0000000..53951a1
--- /dev/null
+++ b/others/easy20160714/21.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+
+int main()
+{
+	FILE * f = fopen("INP.TXT", "r");
+	int n, i, preva, a, r = 1;
+
+	fscanf(f, "%d", &n, &preva);
+	for (i = 1; i < n; i++) { 
+		fscanf(f, "%d", &a);
+		if (a > preva)
+			r++;
+		preva = a;
+	}
+
+	fclose(f);
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%d\n", r);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/22.c b/others/easy20160714/22.c
new file mode 100644
index 0000000..d38c0f5
--- /dev/null
+++ b/others/easy20160714/22.c
@@ -0,0 +1,30 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+
+int main()
+{
+	FILE *fi = fopen("INP.TXT", "r"), *fo = fopen("OUT.TXT", "w");
+	int n, m, i, j = 0, *a, b;
+
+	fscanf(fi, "%d %d", &n, &m);
+	a = malloc(n * sizeof(int));
+
+	for (i = 0; i < n; i++)
+		fscanf(fi, "%d", a + i);
+
+	for (i = 0; i < m; i++) {
+		fscanf(fi, "%d", &b);
+		while (a[j] < b && j < n)
+			fprintf(fo, "%d ", a[j++]);
+		fprintf(fo, "%d ", b);
+	}
+
+	while (j < n)
+		fprintf(fo, "%d ", a[j++]);
+
+	fputc(10, fo);
+	fcloseall();
+
+	return 0;
+}
diff --git a/others/easy20160714/23.c b/others/easy20160714/23.c
new file mode 100644
index 0000000..8a3ec01
--- /dev/null
+++ b/others/easy20160714/23.c
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int cmp(const void *x, const void *y)
+{
+	return *(int *) x - *(int *) y;
+}
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	int n, i, *a, r = 1;
+
+	fscanf(f, "%d", &n);
+	a = malloc(n * sizeof(int));
+
+	for (i = 0; i < n; i++)
+		fscanf(f, "%d", a + i);
+
+	fclose(f);
+
+	qsort(a, n, sizeof(int), cmp);
+
+	for (i = 1; i < n; i++)
+		if (a[i] > a[i - 1])
+			r++;
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%d\n", r);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/24.c b/others/easy20160714/24.c
new file mode 100644
index 0000000..2422b35
--- /dev/null
+++ b/others/easy20160714/24.c
@@ -0,0 +1,26 @@
+#include <stdio.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	int n, k, a, i, b = 0, r = 1;
+
+	fscanf(f, "%d %d", &n, &k);
+
+	for (i = 0; i < n; i++) {
+		fscanf(f, "%d", &a);
+		if (a + b > k) {
+			b = 0;
+			r++;
+		}
+		b += a;
+	}
+
+	fclose(f);
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%d\n", r);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/25.c b/others/easy20160714/25.c
new file mode 100644
index 0000000..e01789c
--- /dev/null
+++ b/others/easy20160714/25.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	int n, k, *a, i, r = 1;
+
+	fscanf(f, "%d %d", &n, &k);
+	a = malloc(n * sizeof(int));
+
+	for (i = 0; i < n; i++)
+		fscanf(f, "%d", a + i);
+
+	fclose(f);
+
+	k = n / k;
+	for (i = k; i < n; i += k)
+		if (memcmp(a, a + i, k * sizeof(int))) {
+			r = 0;
+			break;
+		}
+
+	f = fopen("OUT.TXT", "w");
+	fputs(r ? "YES\n" : "NO\n", f);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/26.c b/others/easy20160714/26.c
new file mode 100644
index 0000000..f7c2d0e
--- /dev/null
+++ b/others/easy20160714/26.c
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	int n, k, *a, i;
+	long long s = 0;
+
+	fscanf(f, "%d %d", &n, &k);
+	a = malloc(n * sizeof(int));
+
+	for (i = 0; i < n; i++) {
+		fscanf(f, "%d", a + i);
+		s += a[i];
+	}
+
+	fclose(f);
+
+	k = s / k;
+	s = 0;
+
+	for (i = 0; i < n; i++) {
+		s += a[i];
+
+		if (s == k)
+			s = 0;
+	}
+
+	f = fopen("OUT.TXT", "w");
+	fputs(s ? "NO\n" : "YES\n", f);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/27.c b/others/easy20160714/27.c
new file mode 100644
index 0000000..5cf8a36
--- /dev/null
+++ b/others/easy20160714/27.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	char m, n, i, j;
+	long *a, r;
+
+	fscanf(f, "%hhd %hhd", &m, &n);
+	a = malloc(m * n * sizeof(long));
+
+	for (i = 0; i < n; i++)
+		fscanf(f, "%ld", a + i);
+
+	for (i = 1; i < m; i++) {
+		fscanf(f, "%ld", a + i * n);
+		for (j = 1; j < n; j++) {
+			fscanf(f, "%ld", a + i * n + j);
+			a[i * n + j] += a[i * n + j - n - 1];
+		}
+	}
+
+	fclose(f);
+
+	r = a[n - 1];
+
+	for (i = n * 2 - 1; i < m * n; i += n)
+		if (a[i] > r)
+			r = a[i];
+
+	for (i = m * (n - 1); i < m * n; i++)
+		if (a[i] > r)
+			r = a[i];
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%ld\n", r);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/28.c b/others/easy20160714/28.c
new file mode 100644
index 0000000..aef9c7a
--- /dev/null
+++ b/others/easy20160714/28.c
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	int m, n, *a, i, l;
+
+	fscanf(f, "%d %d %d", &m, &n, &i);
+	n *= m;
+	a = malloc(n * sizeof(int));
+
+	for (i = 0; i < n; i++)
+		fscanf(f, "%d", a + i);
+
+	fclose(f);
+
+	l = m = *a;
+
+	for (i = 1; i < n; i++)
+		if (a[i] > m)
+			m = a[i];
+
+	for (i = 1; i < n; i++)
+		if (a[i] < l)
+			l = a[i];
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%d\n", m - l);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/29.c b/others/easy20160714/29.c
new file mode 100644
index 0000000..4e81aff
--- /dev/null
+++ b/others/easy20160714/29.c
@@ -0,0 +1,50 @@
+#include <stdio.h>
+
+char divpp(char x, char y)
+{
+	return (x % y) ? (x / y + 1) : (x / y);
+}
+
+float average(int a[10][10], char t, char l, char b, char r)
+{
+	float s = 0.0;
+	char i, j;
+
+	for (i = t; i <= b; i++)
+		for (j = l; j <= r; j++)
+			s += (float) a[i][j];
+
+	return s / (float) (b - t + 1) / (float) (r - l + 1);
+}
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	char m, n, s, i, i0, j, j0, b = 1;
+	int a[10][10];
+	float r = 0;
+
+	fscanf(f, "%hhd %hhd %d", &m, &n, &s);
+
+	for (i = 0; i < m; i++)
+		for (j = 0; j < n; j++)
+			fscanf(f, "%d", &a[i][j]);
+
+	fclose(f);
+
+	for (i = 0; i < m; i++)
+		for (j = 0; j < n; j++)
+			for (i0 = i; i0 < m; i0++)
+				for (j0 = j + divpp(s, i0 - i + 1) - 1; j0 < n;
+				     j0++)
+					if (b || average(a, i, j, i0, j0) > r) {
+						r = average(a, i, j, i0, j0);
+						b = 0;
+					}
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%f\n", r);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/30.c b/others/easy20160714/30.c
new file mode 100644
index 0000000..b2ca347
--- /dev/null
+++ b/others/easy20160714/30.c
@@ -0,0 +1,32 @@
+#include <stdio.h>
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	int n, m, l, r, t, b;
+
+	fscanf(f, "%d", &n);
+
+	fscanf(f, "%d", &m);
+	l = r = m;
+	fscanf(f, "%d", &m);
+	t = b = m;
+
+	for (n--; n; n--) {
+		fscanf(f, "%d", &m);
+		l = (m < l) ? m : l;
+		r = (m > r) ? m : r;
+
+		fscanf(f, "%d", &m);
+		t = (m < t) ? m : t;
+		b = (m > b) ? m : b;
+	}
+
+	fclose(f);
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%d\n", (r - l > b - t) ? r - l : b - t);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/31.c b/others/easy20160714/31.c
new file mode 100644
index 0000000..4465da9
--- /dev/null
+++ b/others/easy20160714/31.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int cmp(const void *x, const void *y)
+{
+	return *(int *) x - *(int *) y;
+}
+
+int main()
+{
+	FILE *f = fopen("INP.TXT", "r");
+	int n, *a, i, m;
+	long r = 0;
+
+	fscanf(f, "%d", &n);
+	a = malloc(n * sizeof(int));
+
+	for (i = 0; i < n; i++)
+		fscanf(f, "%d", a + i);
+
+	fclose(f);
+
+	qsort(a, n, sizeof(int), cmp);
+	m = a[n / 2];
+
+	for (i = 0; i < n; i++)
+		r += abs(a[i] - m);
+
+	f = fopen("OUT.TXT", "w");
+	fprintf(f, "%ld\n", r);
+	fclose(f);
+
+	return 0;
+}
diff --git a/others/easy20160714/README.md b/others/easy20160714/README.md
index 0215e92..e4521d4 100644
--- a/others/easy20160714/README.md
+++ b/others/easy20160714/README.md
@@ -2,8 +2,9 @@
 
 ## Bài 01
 
-Nhập số nguyên x có giá trị tuyệt đối không vượt quá 1000. Tìm số nguyên âm
-chẵn lớn nhất nhỏ hơn x.
+Nhập số nguyên x có giá trị tuyệt đối không vượt quá 1000.
+
+Tìm số nguyên âm chẵn lớn nhất nhỏ hơn x.
 
 ### Ví dụ
 
@@ -17,7 +18,7 @@ Cho một dãy số nguyên, đưa ra số chẵn lớn nhất.
 
 ### Dữ liệu vào
 
-* Dòng đầu chứa số nguyên n là số lượng phần tử của dãy (n ≤ 100).
+* Dòng đầu chứa số nguyên dương n là số lượng phần tử của dãy (n ≤ 100).
 * Dòng thứ hai chứa n số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
   a<sub>n</sub> (|a<sub>i</sub>| ≤ 1000).
 
@@ -36,15 +37,16 @@ Một số duy nhất là số chẵn lớn nhất trong dãy. Nếu không tồ
 
 Một cửa hàng mới khai trương được n ngày. Ban đầu cửa hàng bỏ ra k đồng để đầu
 tư cơ sở hạ tầng. Ngày thứ i cửa hàng bỏ ra một số vốn là a<sub>i</sub> đồng và
-cuối ngày thu về b<sub>i</sub> đồng. Hỏi ngày bao nhiêu thì cửa hàng bắt đầu
-thu hồi được hết vốn bỏ ra?
+cuối ngày thu về b<sub>i</sub> đồng.
+
+Hỏi ngày bao nhiêu thì cửa hàng bắt đầu thu hồi được hết vốn bỏ ra?
 
 ### Dữ liệu vào
 
 * Dòng đầu chứa hai số nguyên dương n và k (n ≤ 100, k ≤ 10<sup>6</sup>).
-* Dòng thứ hai chứa n số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
+* Dòng thứ hai chứa n số nguyên dương a<sub>1</sub>, a<sub>2</sub>, ...,
   a<sub>n</sub> (|a<sub>i</sub>| ≤ 1000).
-* Dòng thứ b chứa n số nguyên b<sub>1</sub>, b<sub>2</sub>, ...,
+* Dòng thứ b chứa n số nguyên dương b<sub>1</sub>, b<sub>2</sub>, ...,
   b<sub>n</sub> (|b<sub>i</sub>| ≤ 1000).
 
 ### Dữ liệu ra
@@ -87,8 +89,9 @@ Giải bóng đá trường CHY có x đội tham gia. Luật chơi như sau. T
 đội sẽ tham gia bốc thăm chọn cặp đá loại trực tiếp. Đội chiến thắng sẽ vào
 vòng sau. Nếu số đội là lẻ, có một đội bốc được lá thăm đặc biệt. Đội đó có thể
 bị loại hoặc cũng có thể không cần phải tham gia thi đấu cũng được vào vòng
-tiếp theo. Cứ như vậy cho tới khi tìm được nhà vô địch. Hỏi số trận đấu của
-giải là bao nhiêu.
+tiếp theo. Cứ như vậy cho tới khi tìm được nhà vô địch.
+
+Hỏi số trận đấu của giải là bao nhiêu?
 
 ### Dữ liệu vào
 
@@ -96,7 +99,7 @@ Một số nguyên dương x duy nhất là số lượng đội tham gia.
 
 ### Dữ liệu ra
 
-Hai số nguyên tổng số trận đấu diễn ra.
+Hai số nguyên dương là tổng số trận đấu diễn ra:
 
 * Trường hợp một là đội bốc được lá thăm đặc biệt sẽ được vào thẳng vòng tiếp.
 * Trường hợp hai là đội bốc lá thăm đặc biệt sẽ bị loại.
@@ -112,16 +115,18 @@ Hai số nguyên tổng số trận đấu diễn ra.
 Mỗi ngày đi học, Đạt xin tiền mẹ x đồng mua bánh mỳ ăn sáng. Mỗi tuần Đạt học 6
 buổi. Nhưng cứ vào ngày thứ 2 đầu tuần, Đạt chở em đi học nên mẹ cho thêm k
 đồng nữa. Tuy nhiên, thay vì ăn sang, Đạt đã tích tiền để mua quà tặng gấu. Giá
-của món quà mà Đạt muốn mua là y đồng. Hỏi buổi học thứ bao nhiêu Đạt đủ tiền
-mua quà? Biết ngày đầu tiên đi học là thứ Hai.
+của món quà mà Đạt muốn mua là y đồng.
+
+Hỏi buổi học thứ bao nhiêu Đạt đủ tiền mua quà, biết ngày đầu tiên đi học là
+thứ Hai?
 
 ### Dữ liệu vào
 
-3 số nguyên dương x, y, k.
+Ba số nguyên dương x, y, k.
 
 ### Dữ liệu ra
 
-Số buổi học.
+Một số nguyên dương duy nhất là số buổi học.
 
 ### Ví dụ
 
@@ -135,10 +140,10 @@ Trong cuộc bỏ phiếu rời UE, đất nước LANDENG có tổ chức cuộ
 Đã có n người tham gia bỏ phiếu với số phiếu. Những người đồng ý việc rời UE sẽ
 ký hiệu phiếu số 1. Những người không đồng ý sẽ ký hiệu trên là phiếu số 2.
 Những người còn lại, có ý kiến khác đã ký hiệu trên phiếu số 3 và ghi thêm một
-số ý kiến của mình. Hãy lập trình cho biết kết quả kiểm phiếu. Biết quốc hội sẽ
-phê duyệt việc rời UE khi có trên 50% người ủng hộ việc rời UE. Do Đạt dự định
-du học sang nước UE nên muốn biết kết quả của cuộc kiểm phiếu, bạn hãy giúp Đạt
-nhé!
+số ý kiến của mình.
+
+Hãy lập trình cho biết kết quả kiểm phiếu, biết quốc hội sẽ phê duyệt việc rời
+UE khi có trên 50% người ủng hộ việc rời UE.
 
 ### Dữ liệu vào
 
@@ -148,7 +153,7 @@ nhé!
 
 ### Dữ liệu ra
 
-YES nếu nước LANDENG rời UE còn NO trong trường hợp ngược lại.
+`YES` nếu nước LANDENG rời UE còn `NO` trong trường hợp ngược lại.
 
 ### Ví dụ
 
@@ -167,12 +172,12 @@ hình tam giác vuông không? Bạn hãy lập trình giúp bé Đạt nhé!
 ### Dữ liệu vào
 
 * Dòng đầu chứa số nguyên dương n (n ≤ 100) là số que diêm nhà bé Đạt.
-* Dòng thứ hai  chứa n số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
+* Dòng thứ hai  chứa n số nguyên dương a<sub>1</sub>, a<sub>2</sub>, ...,
   a<sub>n</sub> là độ dài của n que diêm nhà Đạt.
 
 ### Dữ liệu ra
 
-*YES* nếu có cách xếp cho bé Đạt, *NO* nếu không có.
+`YES` nếu có cách xếp cho bé Đạt, `NO` nếu không có.
 
 ### Ví dụ
 
@@ -195,7 +200,7 @@ các số liệu của bài toán bạn gái Đạt.
 
 ### Dữ liệu ra
 
-Một số duy nhất là kết quả bài toán bạn gái của Đạt.
+Một số tự nhiên duy nhất là kết quả bài toán bạn gái của Đạt.
 
 ### Ví dụ
 
@@ -207,7 +212,7 @@ Một số duy nhất là kết quả bài toán bạn gái của Đạt.
 
 Hôm nay lớp của Đạt lại học về dãy số cộng. Vì là người có giải quốc gia nên
 Đạt được các bạn nam trong lớp tin tưởng giao cho làm hộ một bài toán khó: Cho
-dãy n phần tử kiểm tra xem dãy có phải cấp số cộng hay không? Vì tối nay Đạt đã
+dãy n phần tử kiểm tra xem dãy có phải cấp số cộng hay không. Vì tối nay Đạt đã
 bận nhắn tin cho bạn gái nhưng cũng không muốn phụ lòng các bạn trai nên Đạt
 nhờ tới sự trợ giúp của bạn.
 
@@ -215,11 +220,11 @@ nhờ tới sự trợ giúp của bạn.
 
 * Dòng đầu chứa số nguyên n là số lượng số trong dãy số của bạn trai Đạt.
 * Dòng thứ hai chứa n số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
-  a<sub>n</sub> lần lượt là các số nguyên trong bài toán của bạn trai Đạt.
+  a<sub>n</sub> lần lượt là các số trong bài toán của bạn trai Đạt.
 
 ### Dữ liệu ra
 
-*YES* nếu dãy là cấp số cộng, *NO* trong trường hợp không là cấp số cộng.
+`YES` nếu dãy là cấp số cộng, `NO` trong trường hợp không là cấp số cộng.
 
 ### Ví dụ
 
@@ -241,7 +246,7 @@ hoán vị của dãy 1, 2, ..., n hay không?
 
 ### Dữ liệu ra
 
-*YES* nếu dãy là hoán vị, *NO* trong trường hợp không là hoán vị.
+`YES` nếu dãy là hoán vị, `NO` trong trường hợp không là hoán vị.
 
 ### Ví dụ
 
@@ -262,7 +267,7 @@ Hỏi những bạn có số thứ tự nào đã vắng mặt trong sổ điể
 ### Dữ liệu vào
 
 * Dòng đầu chứa hai số nguyên dương n, m (m ≤ n ≤ 10<sup>5</sup>).
-* Dòng thứ hai chứa m số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
+* Dòng thứ hai chứa m số nguyên dương a<sub>1</sub>, a<sub>2</sub>, ...,
   a<sub>m</sub> (a<sub>i</sub> ≤ n).
 
 ### Dữ liệu ra
@@ -294,7 +299,7 @@ trước đó khám tại phòng đó cộng thêm 1 (người đầu tiên có
 ### Dữ liệu ra
 
 n số nguyên t<sub>1</sub>, t<sub>2</sub>, ..., t<sub>n</sub> với t<sub>i</sub>
-là số thứ tự khám của người thứ i.
+là số thứ tự khám của người thứ i ghi trên một dòng.
 
 ### Ví dụ
 
@@ -311,7 +316,7 @@ Hỏi người nhận giải thưởng đã phải trả số tiền bao nhiêu?
 ### Dữ liệu vào
 
 * Dòng đầu chứa số nguyên dương n (n ≤ 10<sup>5</sup>).
-* Dòng thứ hai chứa n số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
+* Dòng thứ hai chứa n số nguyên dương a<sub>1</sub>, a<sub>2</sub>, ...,
   a<sub>n</sub> (a<sub>i</sub> ≤ 10<sup>5</sup>).
 
 ### Dữ liệu ra
@@ -362,3 +367,372 @@ hiệu `BUY x y` trong đó y là số sản phẩm x cần mua thêm để đ
 |  2 3 5  | BUY 3 4 |
 |  2 2 1  |         |
 |  2 1 3  | BUY 1 2 |
+
+## Bài 16
+
+Cho xâu s chỉ chứa các chữ cái tiếng Anh thường và n yêu cầu có dạng:
+
+* `1 x y`: thêm xâu x vào sau vị trí thứ y của xâu s hiện tại, nếu y = 0 thì
+  thêm x vào đầu xâu s.
+* `2 x y`: xóa xâu s bắt đầu từ vị trí thứ x, độ dài y.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa xâu s và n (|s|, n ≤ 100).
+* n dòng tiếp theo chứa các yêu cầu.
+
+### Dữ liệu ra
+
+Gồm n dòng, mỗi dòng là xâu s sau khi thực hiện mỗi yêu cầu.
+
+### Ví dụ
+
+|         INP.TXT         |   OUT.TXT  |
+| ----------------------- | ---------- |
+| abc 2<br>1 d 1<br>2 2 2 | adbc<br>ac |
+
+## Bài 17
+
+Cho xâu s gồm các chữ cái tiếng Anh và dấu cách.
+
+Chuẩn hóa s về dạng biểu diễn tên người - chữ cái đầu tiên mỗi từ viết hoa, các
+chữ còn lại viết thường, giữa các từ chỉ có một dấu cách. 
+
+### Dữ liệu vào
+
+Xâu s (|s| ≤ 100000).
+
+### Dữ liệu ra
+
+Xâu s sau khi chuẩn hoá.
+
+### Ví dụ
+
+|           INP.TXT           |           OUT.TXT          |
+| --------------------------- | -------------------------- |
+| `riCHArd  MAttHEW sTalLmAn` | `Richard Matthew Stallman` |
+
+## Bài 18
+
+Cho xâu s gồm chữ cái in thường và chữ số.
+
+Tính tổng các số trong xâu.
+
+### Dữ liệu vào
+
+Xâu s (|s| ≤ 50).
+
+### Dữ liệu ra
+
+Một số tự nhiên là tổng cần tìm.
+
+### Ví dụ
+
+|   INP.TXT   | OUT.TXT |
+| :---------: | :-----: |
+| 1as123as3xy |   127   |
+
+## Bài 20
+
+Cho hai xâu x và y.
+
+Tìm vị trí x xuất hiện đầu tiên trong y.
+
+### Dữ liệu vào
+
+Hai xâu x và y (|x|, |y| ≤ 100000).
+
+### Dữ liệu ra
+
+Vị trí x xuất hiện đầu tiên trong y, nếu không tìm được in ra -1.
+
+### Ví dụ
+
+|  INP.TXT  | OUT.TXT |
+| :-------: | :-----: |
+| abc zabcd |    2    |
+| abc abdd  |   -1    |
+
+## Bài 21
+
+Cho hai xâu x và y.
+
+Kiểm tra xem có thể xoá một số kí tự của y để được x (hay x là xâu con không
+liên tiếp của y) không.
+
+### Dữ liệu vào
+
+Hai xâu x và y (|x|, |y| ≤ 1000).
+
+### Dữ liệu ra
+
+`YES` nếu x là xâu con không liên tiếp của y, `NO` nếu không phải.
+
+### Ví dụ
+
+|  INP.TXT  | OUT.TXT |
+| :-------: | :-----: |
+| abc adbec |   YES   |
+| abb abcd  |    NO   |
+
+## Bài 21
+
+Hôm nay Đạt được mẹ cho tiền đi chợ chơi. Đạt muốn mua áo để về khoe bạn gái. Ở
+chợ có n cái áo xếp thành hàng đánh số từ 1 tới n và giá của chúng cũng tăng
+dần từ a<sub>1</sub> tới a<sub>n</sub>. Những áo cùng loại thì có giá giống
+nhau và những áo khác loại có giá khác nhau. Đạt định mua mỗi loại một áo nhưng
+Đạt không biết là có bao nhiêu loại áo.
+
+Hãy giúp Đạt đếm xem chợ có bao nhiêu loại áo.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa số nguyên dương n (n ≤ 10<sup>5</sup>).
+* Dòng thứ hai chứa n số nguyên dương a<sub>1</sub> ≤ a<sub>2</sub> ≤ ... ≤
+  a<sub>n</sub> ≤ 10<sup>5</sup>.
+
+### Dữ liệu ra
+
+Một số nguyên dương duy nhất là số loại áo trong chợ.
+
+### Ví dụ
+
+|      INP.TXT     | OUT.TXT |
+| ---------------- | :-----: |
+| 6<br>1 2 2 2 5 5 |    3    |
+
+## Bài 22
+
+Hôm nay Đạt ở nhà một mình. Anh của Đạt có một xấp giấy. Mỗi tờ ghi số khác
+nhau. Các tờ giấy đã được sắp xếp theo thứ tự tăng dần của số ghi trên tờ giấy.
+Do nghịch ngợm Đạt đã chia xấp giấy của anh thành hai xấp nhỏ hơn cũng được sắp
+xếp tăng dần theo số trên tờ giấy. Vì sợ anh mắng nên Đạt nhờ bạn tìm cách sắp
+xếp chúng lại như ban đầu.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa hai số nguyên dương n, m (n, m ≤ 10<sup>5</sup>) lần lượt là số
+  lượng các tờ giấy của mỗi xấp.
+* Dòng thứ hai chứa n số nguyên dương a<sub>1</sub>, a<sub>2</sub>, ...,
+  a<sub>n</sub> là số ghi trên các tờ giấy của xấp thứ nhất.
+* Dòng thứ ba chứa m số nguyên dương b<sub>1</sub>, b<sub>2</sub>, ...,
+  b<sub>n</sub> là số ghi trên các tờ giấy của xấp thứ hai.
+
+### Ví dụ
+
+|        INP.TXT        |   OUT.TXT   |
+| --------------------- | ----------- |
+| 3 3<br>1 4 6<br>2 3 5 | 1 2 3 4 5 6 |
+
+## Bài 23
+
+Hôm nay Đạt tiếp tục được mẹ cho tiền đi chợ chơi. Đạt lại muốn mua áo về khoe
+bạn gái. Ở chợ có n cái áo có giá lần lượt là a<sub>1</sub>, a<sub>2</sub>,
+..., a<sub>n</sub>. Những áo cùng loại thì có giá giống nhau và những áo khác
+loại có giá khác nhau. Đạt định mua mỗi loại 1 áo nhưng Đạt không biết là có
+bao nhiêu loại áo.
+
+Hãy giúp Đạt đếm xem chợ có bao nhiêu loại áo.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa số nguyên dương n (n ≤ 10<sup>5</sup>).
+* Dòng thứ hai chứa n số nguyên dương a<sub>1</sub>, a<sub>2</sub>, ...,
+  a<sub>n</sub>.
+
+### Dữ liệu ra
+
+Một số nguyên dương duy nhất là số loại áo trong chợ.
+
+### Ví dụ
+
+|      INP.TXT     | OUT.TXT |
+| ---------------- | :-----: |
+| 6<br>3 2 1 3 1 1 |    3    |
+
+## Bài 24
+
+Công ty của bố Đạt dùng xe tải để chở hàng. Mỗi xe có thể chở không quá k tấn.
+Có n kiện hàng, kiện hàng thứ i có khối lượng a<sub>i</sub>. Vì các kiện hàng
+phải được chuyển ra theo thứ tự nên mỗi xe tải chỉ được chở các kiện hàng liên
+tiếp.
+
+Đạt nhờ bạn tính số xe tải cần dùng.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa hai số nguyên dương n và k (n, k ≤ 10<sup>5</sup>).
+* Dòng thứ hai chứa n số nguyên dương a<sub>1</sub>, a<sub>2</sub>, ...,
+  a<sub>n</sub>.
+
+### Dữ liệu ra
+
+Một số nguyên dương duy nhất là số lượng xe tải cần dùng.
+
+### Ví dụ
+
+|      INP.TXT     | OUT.TXT |
+| ---------------- | :-----: |
+| 5 7<br>1 4 4 2 5 |    3    |
+
+## Bài 25
+
+Đạt có một băng giấy gồm n ô lần lượt ghi các số nguyên a<sub>1</sub>,
+a<sub>2</sub>, ..., a<sub>n</sub>. Bạn ấy muốn cắt băng giấy thành k đoạn nhỏ
+giống hệt nhau.
+
+Hãy giúp Đạt kiểm tra xem có tồn tại cách cắt nào như thế không.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa hai số nguyên dương n và k (n, k ≤ 10<sup>5</sup>).
+* Dòng thứ hai chứa n số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
+  a<sub>n</sub>.
+
+### Dữ liệu ra
+
+`YES` nếu có thể cắt như vậy, `NO` nếu không.
+
+### Ví dụ
+
+|          INP.TXT         | OUT.TXT |
+| ------------------------ | :-----: |
+| 9 3<br>1 2 5 1 2 5 1 2 5 |   YES   |
+
+## Bài 26
+
+Đạt có một băng giấy dài gồm n ô, mỗi ô có ghi một số nguyên. Đạt muốn cắt băng
+giấy làm đúng k đoạn nhỏ sao cho các đoạn có tổng các số ghi trên giấy là bằng
+nhau.
+
+Đạt muốn biết có tồn tại cách cắt nào như thế không.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa hai số nguyên dương n và k (n, k ≤ 10<sup>5</sup>).
+* Dòng thứ hai chứa n số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
+  a<sub>n</sub>.
+
+### Dữ liệu ra
+
+`YES` nếu có thể cắt như vậy, `NO` nếu không.
+
+### Ví dụ
+
+|          INP.TXT          | OUT.TXT |
+| ------------------------- | :-----: |
+| 9 3<br>1 2 3 4 10 5 3 1 1 |   YES   |
+
+## Bài 27
+
+Cho bảng kích thước m * n. Mỗi ô có chứa một số nguyên có giá trị tuyệt đối nhỏ
+hơn 1000. Đường chéo là các ô nằm trên đường thẳng đi qua góc trái trên vào góc
+phải dưới của một ô bất kì.
+
+Tìm đường chéo có tổng các ô trong đó lớn nhất.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa hai số nguyên dương m và n (m, n ≤ 100).
+* m dòng sau mỗi dòng chứa n số nguyên là các số trong bảng.
+
+### Dữ liệu ra
+
+Tổng lớn nhất tìm được.
+
+### Ví dụ
+
+|                  INP.TXT                  | OUT.TXT |
+| ----------------------------------------- | :-----: |
+| 3 4<br>-6 5 1 5<br>-1 10 5 1<br>-1 1 10 5 |    15   |
+
+## Bài 28
+
+Cho ma trận kích thước m * n chứ các số nguyên. Ma trận con được xác định bởi
+tọa độ của ô trái trên và ô phải dưới. *Giá trị* của một ma trận con được định
+nghĩa là hiệu của số lớn nhất và số nhỏ nhất trong đó.
+
+Hãy tìm một ma trận con có không ít hơn s ô và có *giá trị* lớn nhất.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa ba số nguyên dương m, n và s (m, n ≤ 100; s ≤ m * n).
+* m dòng sau mỗi dòng chứa n số nguyên là các số trong bảng.
+
+### Dữ liệu ra
+
+*Giá trị* lớn nhất tìm được.
+
+### Ví dụ
+
+|                  INP.TXT                  | OUT.TXT |
+| ----------------------------------------- | :-----: |
+| 3 4<br>-6 5 1 5<br>-1 10 5 1<br>-1 1 10 5 |    16   |
+
+## Bài 29
+
+Cho ma trận kích thước m * n chứ các số nguyên. Ma trận con được xác định bởi
+tọa độ của ô trái trên và ô phải dưới.
+
+Hãy tìm ma trận con có không ít hơn s ô và có trung bình cộng các ô lớn nhất.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa ba số nguyên dương m, n và s (m, n ≤ 10; s ≤ m * n).
+* m dòng sau mỗi dòng chứa n số nguyên là các số trong bảng.
+
+### Dữ liệu ra
+
+Trung bình cộng lớn nhất tìm được.
+
+### Ví dụ
+
+|                   INP.TXT                  | OUT.TXT |
+| ------------------------------------------ | :-----: |
+| 3 4<br>-6 5 1 5<br>-1 10 5 1<br>-1 10 10 5 |   8.75  |
+
+## Bài 30
+
+Cho n điểm trên mặt phẳng tọa độ.
+
+Tìm hình vuông có cạnh song song với trục tọa độ có cạnh nhỏ nhất chứa tất cả
+các điểm đó.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa số nguyên dương n (n ≤ 10<sup>5</sup>).
+* Dòng thứ hai chứa n cặp số nguyên x<sub>1</sub>, y<sub>1</sub>,
+  x<sub>2</sub>, y<sub>2</sub>, ..., x<sub>n</sub>, y<sub>n</sub> với
+  (x<sub>i</sub>, y<sub>i</sub>) là toạ độ của điểm thứ i.
+
+### Dữ liệu ra
+
+Một số nguyên dương duy nhất là độ dài cạnh hình vuông cần tìm.
+
+### Ví dụ
+
+|           INP.TXT          | OUT.TXT |
+| -------------------------- | :-----: |
+| 5<br>1 1 1 1 3 3 1 3 3 2 2 |    2    |
+
+## Bài 31
+
+Cho n điểm trên trục hoành.
+
+Tìm điểm có tổng khoảng cách đến các điểm đã cho là nhỏ nhất.
+
+### Dữ liệu vào
+
+* Dòng đầu chứa số nguyên dương n (n ≤ 10<sup>5</sup>).
+* Dòng thứ hai chứa n số nguyên a<sub>1</sub>, a<sub>2</sub>, ...,
+  a<sub>n</sub> lần lượt là hoành độ các điểm đã cho.
+
+### Dữ liệu ra
+
+Một số tự nhiên duy nhất là tổng các khoảng cách nhỏ nhất tìm được.
+
+### Ví dụ
+
+|     INP.TXT    | OUT.TXT |
+| -------------- | :-----: |
+| 5<br>1 3 5 6 8 |    10   |