aboutsummaryrefslogtreecommitdiff
path: root/store/works/life/algorithm-contest-2
diff options
context:
space:
mode:
Diffstat (limited to 'store/works/life/algorithm-contest-2')
-rw-r--r--store/works/life/algorithm-contest-2/README.md9
-rw-r--r--store/works/life/algorithm-contest-2/gen.ps139
-rw-r--r--store/works/life/algorithm-contest-2/generator/1/1.in1
-rw-r--r--store/works/life/algorithm-contest-2/generator/1/2.in1
-rw-r--r--store/works/life/algorithm-contest-2/generator/1/3.in1
-rw-r--r--store/works/life/algorithm-contest-2/generator/1/4.in1
-rw-r--r--store/works/life/algorithm-contest-2/generator/1/5.in1
-rw-r--r--store/works/life/algorithm-contest-2/generator/2/1.in2
-rw-r--r--store/works/life/algorithm-contest-2/generator/2/2.in2
-rw-r--r--store/works/life/algorithm-contest-2/generator/2/3.cpp15
-rw-r--r--store/works/life/algorithm-contest-2/generator/2/4.cpp15
-rw-r--r--store/works/life/algorithm-contest-2/generator/2/5.cpp15
-rw-r--r--store/works/life/algorithm-contest-2/generator/3/1.in4
-rw-r--r--store/works/life/algorithm-contest-2/generator/3/2.in5
-rw-r--r--store/works/life/algorithm-contest-2/generator/3/3.in6
-rw-r--r--store/works/life/algorithm-contest-2/generator/3/4.cpp18
-rw-r--r--store/works/life/algorithm-contest-2/generator/3/5.cpp18
-rw-r--r--store/works/life/algorithm-contest-2/generator/4/1.in3
-rw-r--r--store/works/life/algorithm-contest-2/generator/4/2.in4
-rw-r--r--store/works/life/algorithm-contest-2/generator/4/3.in4
-rw-r--r--store/works/life/algorithm-contest-2/generator/4/4.cpp29
-rw-r--r--store/works/life/algorithm-contest-2/generator/4/5.cpp29
-rw-r--r--store/works/life/algorithm-contest-2/generator/4/6.cpp29
-rw-r--r--store/works/life/algorithm-contest-2/generator/5/1.in2
-rw-r--r--store/works/life/algorithm-contest-2/generator/5/2.in2
-rw-r--r--store/works/life/algorithm-contest-2/generator/5/3.cpp47
-rw-r--r--store/works/life/algorithm-contest-2/output.zipbin0 -> 68853 bytes
-rw-r--r--store/works/life/algorithm-contest-2/pack.ps16
-rw-r--r--store/works/life/algorithm-contest-2/problems.pdfbin0 -> 157726 bytes
-rw-r--r--store/works/life/algorithm-contest-2/solution/1.cpp34
-rw-r--r--store/works/life/algorithm-contest-2/solution/2.cpp41
-rw-r--r--store/works/life/algorithm-contest-2/solution/3.cpp77
-rw-r--r--store/works/life/algorithm-contest-2/solution/4.cpp48
-rw-r--r--store/works/life/algorithm-contest-2/solution/5-bf.cpp34
-rw-r--r--store/works/life/algorithm-contest-2/solution/5.cpp49
35 files changed, 591 insertions, 0 deletions
diff --git a/store/works/life/algorithm-contest-2/README.md b/store/works/life/algorithm-contest-2/README.md
new file mode 100644
index 0000000..ce3292d
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/README.md
@@ -0,0 +1,9 @@
+2020.10.25
+
+此文件夹包含第二届数计学院算法大赛相关的文件。
+
+- `solution`里是参考答案。
+- `generator`里是测试数据生成器。
+- `gen.ps1`和`pack.ps1`为生成测试数据用的便捷脚本。
+- `output.zip`为最终的测试数据。
+- `problems.pdf`为本次比赛的题目。
diff --git a/store/works/life/algorithm-contest-2/gen.ps1 b/store/works/life/algorithm-contest-2/gen.ps1
new file mode 100644
index 0000000..60b88b2
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/gen.ps1
@@ -0,0 +1,39 @@
+Push-Location solution
+
+foreach ($problem in 1..5) {
+ clang-cl "$problem.cpp" /O2 "-fsanitize=address,undefined"
+}
+
+Pop-Location
+
+Remove-Item -Recurse output
+
+mkdir .\output
+
+$time_output = @()
+
+foreach ($problem in 1..5) {
+ mkdir output/$problem
+ foreach ($genfile in Get-ChildItem "generator/$problem") {
+ if ($genfile.Name -match "(.+)\.in") {
+ $genfile_id = $Matches[1]
+ Copy-Item $genfile output/$problem
+ }
+ elseif ($genfile.Name -match "(.+)\.cpp") {
+ $genfile_id = $Matches[1]
+ Push-Location "generator/$problem"
+ clang-cl $genfile.Name /O2 "-fsanitize=address,undefined"
+ Pop-Location
+ & "./generator/$problem/$genfile_id.exe" > "./output/$problem/$genfile_id.in"
+ }
+ $time = (Measure-Command {
+ Get-Content "./output/$problem/$genfile_id.in" | & "./solution/$problem.exe" > "./output/$problem/$genfile_id.out"
+ }).TotalSeconds
+
+ $time_output += "Problem $problem test point $genfile_id time: $time s."
+ }
+}
+
+foreach ($line in $time_output) {
+ Write-Output $line
+}
diff --git a/store/works/life/algorithm-contest-2/generator/1/1.in b/store/works/life/algorithm-contest-2/generator/1/1.in
new file mode 100644
index 0000000..38f8fd6
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/1/1.in
@@ -0,0 +1 @@
+8 3 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/1/2.in b/store/works/life/algorithm-contest-2/generator/1/2.in
new file mode 100644
index 0000000..f4eea7b
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/1/2.in
@@ -0,0 +1 @@
+4 4 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/1/3.in b/store/works/life/algorithm-contest-2/generator/1/3.in
new file mode 100644
index 0000000..11ab954
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/1/3.in
@@ -0,0 +1 @@
+4 6 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/1/4.in b/store/works/life/algorithm-contest-2/generator/1/4.in
new file mode 100644
index 0000000..11c3433
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/1/4.in
@@ -0,0 +1 @@
+8 2 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/1/5.in b/store/works/life/algorithm-contest-2/generator/1/5.in
new file mode 100644
index 0000000..fda96a5
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/1/5.in
@@ -0,0 +1 @@
+88888 5 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/2/1.in b/store/works/life/algorithm-contest-2/generator/2/1.in
new file mode 100644
index 0000000..37ba146
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/2/1.in
@@ -0,0 +1,2 @@
+4
+6 2 9 1 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/2/2.in b/store/works/life/algorithm-contest-2/generator/2/2.in
new file mode 100644
index 0000000..01faa33
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/2/2.in
@@ -0,0 +1,2 @@
+3
+13 22 11
diff --git a/store/works/life/algorithm-contest-2/generator/2/3.cpp b/store/works/life/algorithm-contest-2/generator/2/3.cpp
new file mode 100644
index 0000000..0eeadd1
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/2/3.cpp
@@ -0,0 +1,15 @@
+#include <iostream>
+#include <random>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> distribution(1, 5000);
+ const int SIZE = 5000;
+ cout << SIZE << '\n';
+ for (int i = 0; i < SIZE; i++) {
+ cout << distribution(engine) << ' ';
+ }
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/generator/2/4.cpp b/store/works/life/algorithm-contest-2/generator/2/4.cpp
new file mode 100644
index 0000000..08d5c14
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/2/4.cpp
@@ -0,0 +1,15 @@
+#include <iostream>
+#include <random>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> distribution(1, 9999);
+ const int SIZE = 9999;
+ cout << SIZE << '\n';
+ for (int i = 0; i < SIZE; i++) {
+ cout << distribution(engine) << ' ';
+ }
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/generator/2/5.cpp b/store/works/life/algorithm-contest-2/generator/2/5.cpp
new file mode 100644
index 0000000..bae2a90
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/2/5.cpp
@@ -0,0 +1,15 @@
+#include <iostream>
+#include <random>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> distribution(1, 9999);
+ const int SIZE = 9998;
+ cout << SIZE << '\n';
+ for (int i = 0; i < SIZE; i++) {
+ cout << distribution(engine) << ' ';
+ }
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/generator/3/1.in b/store/works/life/algorithm-contest-2/generator/3/1.in
new file mode 100644
index 0000000..170d639
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/3/1.in
@@ -0,0 +1,4 @@
+3
+#..
+...
+#.# \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/3/2.in b/store/works/life/algorithm-contest-2/generator/3/2.in
new file mode 100644
index 0000000..7cefeb0
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/3/2.in
@@ -0,0 +1,5 @@
+4
+#...
+....
+#.#.
+.... \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/3/3.in b/store/works/life/algorithm-contest-2/generator/3/3.in
new file mode 100644
index 0000000..51fff91
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/3/3.in
@@ -0,0 +1,6 @@
+5
+#....
+.....
+.....
+.....
+..... \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/3/4.cpp b/store/works/life/algorithm-contest-2/generator/3/4.cpp
new file mode 100644
index 0000000..ed2fbb6
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/3/4.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+#include <random>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> distribution(1, 100);
+ const int SIZE = 100;
+ cout << SIZE << '\n';
+ for (int i = 0; i < SIZE; i++) {
+ for (int j = 0; j < SIZE; j++) {
+ cout << (distribution(engine) > 90 ? '#' : '.');
+ }
+ cout << '\n';
+ }
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/generator/3/5.cpp b/store/works/life/algorithm-contest-2/generator/3/5.cpp
new file mode 100644
index 0000000..bf1d14c
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/3/5.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+#include <random>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> distribution(1, 100);
+ const int SIZE = 100;
+ cout << SIZE << '\n';
+ for (int i = 0; i < SIZE; i++) {
+ for (int j = 0; j < SIZE; j++) {
+ cout << (distribution(engine) < 75 ? '#' : '.');
+ }
+ cout << '\n';
+ }
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/generator/4/1.in b/store/works/life/algorithm-contest-2/generator/4/1.in
new file mode 100644
index 0000000..feef14b
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/4/1.in
@@ -0,0 +1,3 @@
+2 10
+6 5
+5 6
diff --git a/store/works/life/algorithm-contest-2/generator/4/2.in b/store/works/life/algorithm-contest-2/generator/4/2.in
new file mode 100644
index 0000000..d72e475
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/4/2.in
@@ -0,0 +1,4 @@
+3 20
+1 2
+2 1
+3 4 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/4/3.in b/store/works/life/algorithm-contest-2/generator/4/3.in
new file mode 100644
index 0000000..60d56de
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/4/3.in
@@ -0,0 +1,4 @@
+3 1
+4 5
+8 6
+7 7 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/4/4.cpp b/store/works/life/algorithm-contest-2/generator/4/4.cpp
new file mode 100644
index 0000000..fc0de0b
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/4/4.cpp
@@ -0,0 +1,29 @@
+#include <iostream>
+#include <random>
+#include <vector>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> distribution(1, 1000);
+ const int SIZE = 100;
+ std::vector<int> b;
+
+ for (int i = 0; i < SIZE * 2; i++) {
+ b.push_back(distribution(engine));
+ }
+
+ long long sum = 0;
+ for (int i = 0; i < SIZE; i++) {
+ sum += b[i * 2] * b[i * 2 + 1];
+ }
+
+ cout << SIZE << ' ' << (sum + 10) << '\n';
+
+ for (int i = 0; i < SIZE; i++) {
+ cout << b[i * 2] << ' ' << b[i * 2 + 1] << '\n';
+ }
+
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/generator/4/5.cpp b/store/works/life/algorithm-contest-2/generator/4/5.cpp
new file mode 100644
index 0000000..518a4aa
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/4/5.cpp
@@ -0,0 +1,29 @@
+#include <iostream>
+#include <random>
+#include <vector>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> distribution(1, 10000);
+ const int SIZE = 600;
+ std::vector<int> b;
+
+ for (int i = 0; i < SIZE * 2; i++) {
+ b.push_back(distribution(engine));
+ }
+
+ long long sum = 0;
+ for (int i = 0; i < SIZE; i++) {
+ sum += b[i * 2] * b[i * 2 + 1];
+ }
+
+ cout << SIZE << ' ' << 5000 << '\n';
+
+ for (int i = 0; i < SIZE; i++) {
+ cout << b[i * 2] << ' ' << b[i * 2 + 1] << '\n';
+ }
+
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/generator/4/6.cpp b/store/works/life/algorithm-contest-2/generator/4/6.cpp
new file mode 100644
index 0000000..b4bdb00
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/4/6.cpp
@@ -0,0 +1,29 @@
+#include <iostream>
+#include <random>
+#include <vector>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> distribution(1, 10000);
+ const int SIZE = 100;
+ std::vector<int> b;
+
+ for (int i = 0; i < SIZE * 2; i++) {
+ b.push_back(distribution(engine));
+ }
+
+ long long sum = 0;
+ for (int i = 0; i < SIZE; i++) {
+ sum += b[i * 2] * b[i * 2 + 1];
+ }
+
+ cout << SIZE << ' ' << 5000 << '\n';
+
+ for (int i = 0; i < SIZE; i++) {
+ cout << b[i * 2] << ' ' << b[i * 2 + 1] << '\n';
+ }
+
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/generator/5/1.in b/store/works/life/algorithm-contest-2/generator/5/1.in
new file mode 100644
index 0000000..a1dfd91
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/5/1.in
@@ -0,0 +1,2 @@
+5 3
+6 1 2 3 4 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/5/2.in b/store/works/life/algorithm-contest-2/generator/5/2.in
new file mode 100644
index 0000000..7c0d388
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/5/2.in
@@ -0,0 +1,2 @@
+6 8
+1 9 5 4 3 6 \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/generator/5/3.cpp b/store/works/life/algorithm-contest-2/generator/5/3.cpp
new file mode 100644
index 0000000..62d18c4
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/generator/5/3.cpp
@@ -0,0 +1,47 @@
+#include <iostream>
+#include <random>
+#include <vector>
+
+using std::cout;
+
+int main() {
+ std::default_random_engine engine(std::random_device{}());
+ std::uniform_int_distribution<int> insert_distribution(0, 997);
+ std::uniform_int_distribution<int> distribution(1, 100000);
+ const int SIZE = 1000;
+ std::vector<int> v;
+
+ for (int i = 0; i < SIZE - 1; i++) {
+ v.push_back(distribution(engine));
+ }
+
+ int K = 320;
+
+ int a_index = insert_distribution(engine);
+ int a = v[a_index];
+ int b_index = insert_distribution(engine);
+ while (b_index == a_index) {
+ b_index = insert_distribution(engine);
+ }
+ int b = v[b_index];
+
+ int c_index = insert_distribution(engine);
+ while (c_index == a_index && c_index == b_index) {
+ c_index = insert_distribution(engine);
+ }
+ int c = v[c_index];
+
+ int d = (((-a - b - c) % K + K) % K) + 20 * K;
+
+ int d_index = insert_distribution(engine);
+
+ v.insert(v.cbegin() + d_index, c);
+
+ cout << SIZE << ' ' << K << '\n';
+
+ for (int i = 0; i < SIZE; i++) {
+ cout << v[i] << ' ';
+ }
+
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/output.zip b/store/works/life/algorithm-contest-2/output.zip
new file mode 100644
index 0000000..9ef7e40
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/output.zip
Binary files differ
diff --git a/store/works/life/algorithm-contest-2/pack.ps1 b/store/works/life/algorithm-contest-2/pack.ps1
new file mode 100644
index 0000000..6d77d81
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/pack.ps1
@@ -0,0 +1,6 @@
+foreach ($problem in 1..5) {
+ Push-Location "output/$problem"
+ 7z a -tzip "$problem.zip" *
+ Move-Item "$problem.zip" ..
+ Pop-Location
+}
diff --git a/store/works/life/algorithm-contest-2/problems.pdf b/store/works/life/algorithm-contest-2/problems.pdf
new file mode 100644
index 0000000..dfb7df1
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/problems.pdf
Binary files differ
diff --git a/store/works/life/algorithm-contest-2/solution/1.cpp b/store/works/life/algorithm-contest-2/solution/1.cpp
new file mode 100644
index 0000000..2689f9d
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/solution/1.cpp
@@ -0,0 +1,34 @@
+#include <iostream>
+#include <cstdio>
+#include <cstring>
+#include <algorithm>
+#include <vector>
+#include <queue>
+#include <stack>
+#include <set>
+#include <map>
+#include <cmath>
+#include <unordered_map>
+#include <unordered_set>
+#include <string>
+#include <sstream>
+#include <climits>
+#define x first
+#define y second
+#define pub push_back
+#define mp make_pair
+#define ll long long
+using namespace std;
+
+int x, y;
+
+int main(void) {
+ cin >> x >> y;
+ int ans = x;
+ while (x >= y) {
+ ans += x / y;
+ x = x / y + x % y;
+ }
+ cout << ans;
+ return 0;
+} \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/solution/2.cpp b/store/works/life/algorithm-contest-2/solution/2.cpp
new file mode 100644
index 0000000..4410da0
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/solution/2.cpp
@@ -0,0 +1,41 @@
+#define _CRT_SECURE_NO_WARNINGS
+#include <iostream>
+#include <cstdio>
+#include <cstring>
+#include <algorithm>
+#include <vector>
+#include <queue>
+#include <stack>
+#include <set>
+#include <map>
+#include <cmath>
+#include <unordered_map>
+#include <unordered_set>
+#include <string>
+#include <sstream>
+#include <climits>
+#define x first
+#define y second
+#define pub push_back
+#define mp make_pair
+#define ll long long
+using namespace std;
+typedef pair<int, int> PII;
+
+const int MAXN = 1e5 + 5;
+int n, a[MAXN];
+
+int main(void) {
+ cin >> n;
+ for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
+ sort(a + 1, a + 1 + n);
+
+ int l = 1, r = n;
+ ll ans = 0;
+
+ while (l < r) {
+ ans += (a[r--] - a[l++]);
+ }
+ cout << ans;
+ return 0;
+} \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/solution/3.cpp b/store/works/life/algorithm-contest-2/solution/3.cpp
new file mode 100644
index 0000000..a97e351
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/solution/3.cpp
@@ -0,0 +1,77 @@
+#include <iostream>
+#include <cstdio>
+#include <cstring>
+#include <algorithm>
+#include <vector>
+#include <queue>
+#include <stack>
+#include <set>
+#include <map>
+#include <cmath>
+#include <unordered_map>
+#include <unordered_set>
+#include <string>
+#include <sstream>
+#include <climits>
+#define x first
+#define y second
+#define pub push_back
+#define mp make_pair
+#define ll long long
+using namespace std;
+typedef pair<int, int> PII;
+
+struct node{
+ int x, y;
+ node(){}
+ node(int _x = 0,int _y = 0): x(_x), y(_y){}
+};
+
+int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
+int n;
+vector<string> graph;
+vector<vector<int>> vis;
+
+int solve() {
+ queue<node> Q;
+ for(int i = 0;i < n;++i){
+ for(int j = 0;j < n;++j){
+ if(graph[i][j] == '#') Q.push(node(i,j));
+ vis[i][j] = 0;
+ }
+ }
+
+ if(Q.size() == n * n || Q.empty()) return -1;
+
+ int dis = 0;
+ while(!Q.empty()){
+ int size = Q.size();
+ while(size-- > 0){
+ node cur = Q.front();
+ Q.pop();
+ for(int i = 0;i < 4;i++){
+ int nextX = cur.x + dir[i][0];
+ int nextY = cur.y + dir[i][1];
+ if(nextX > -1 && nextX < n && nextY > -1 && nextY < n && graph[nextX][nextY] == '.' && !vis[nextX][nextY]){
+ vis[nextX][nextY] = 1;
+ Q.push(node(nextX,nextY));
+ }
+ }
+ }
+ if(!Q.empty()) dis += 1;
+ }
+ return dis;
+}
+
+int main(void) {
+ cin >> n;
+ string line;
+ vis.resize(n + 1, vector<int>(n + 1));
+ for (int i = 0; i < n; i++) {
+ cin >> line;
+ graph.push_back(line);
+ }
+
+ cout << solve();
+ return 0;
+} \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/solution/4.cpp b/store/works/life/algorithm-contest-2/solution/4.cpp
new file mode 100644
index 0000000..93c9190
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/solution/4.cpp
@@ -0,0 +1,48 @@
+#define _CRT_SECURE_NO_WARNINGS
+#include <iostream>
+#include <cstdio>
+#include <cstring>
+#include <algorithm>
+#include <vector>
+#include <set>
+#include <map>
+#include <cmath>
+#include <unordered_map>
+#define x first
+#define y second
+#define pub push_back
+#define MP make_pair
+#define LL long long
+using namespace std;
+typedef pair<int, int> PII;
+
+const int MAXN = 1e5 + 5;
+int n, k, h[MAXN], w[MAXN];
+
+bool check(int m) {
+ if (m == 0) return true;
+ int cnt = 0;
+ for (int i = 0; i < n; i++) {
+ cnt += (h[i] / m) * (w[i] / m);
+ }
+ return cnt >= k;
+}
+
+int main(void) {
+ cin >> n >> k;
+ int mx = 0;
+ for (int i = 0; i < n; i++) {
+ scanf("%d", &h[i]);
+ scanf("%d", &w[i]);
+ mx = max(mx, max(h[i], w[i]));
+ }
+
+ int l = 0, r = mx;
+ while (l < r) {
+ int m = (l + r + 1) >> 1;
+ if (check(m)) l = m;
+ else r = m - 1;
+ }
+ cout << r;
+ return 0;
+} \ No newline at end of file
diff --git a/store/works/life/algorithm-contest-2/solution/5-bf.cpp b/store/works/life/algorithm-contest-2/solution/5-bf.cpp
new file mode 100644
index 0000000..f197e6b
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/solution/5-bf.cpp
@@ -0,0 +1,34 @@
+#include <iostream>
+
+int batteries[1000];
+
+int main(void) {
+ int N, K;
+ std::cin >> N >> K;
+ for (int i = 0; i < N; i++)
+ std::cin >> batteries[i];
+
+ int max = 0;
+ int max_index[4];
+
+ for (int i = 0; i < N; i++) {
+ for (int j = i + 1; j < N; j++) {
+ for (int k = j + 1; k < N; k++) {
+ for (int l = k + 1; l < N; l++) {
+ int sum = batteries[i] + batteries[j] + batteries[k] + batteries[l];
+ if (sum % K == 0 && sum > max) {
+ max = sum;
+ max_index[0] = i;
+ max_index[1] = j;
+ max_index[2] = k;
+ max_index[3] = l;
+ }
+ }
+ }
+ }
+ }
+
+ std::cout << max;
+
+ return 0;
+}
diff --git a/store/works/life/algorithm-contest-2/solution/5.cpp b/store/works/life/algorithm-contest-2/solution/5.cpp
new file mode 100644
index 0000000..b668f95
--- /dev/null
+++ b/store/works/life/algorithm-contest-2/solution/5.cpp
@@ -0,0 +1,49 @@
+#include <iostream>
+#include <cstdio>
+#include <cstring>
+#include <algorithm>
+#include <vector>
+#include <queue>
+#include <stack>
+#include <set>
+#include <map>
+#include <cmath>
+#include <unordered_map>
+#include <unordered_set>
+#include <string>
+#include <sstream>
+#include <climits>
+#define x first
+#define y second
+#define pub push_back
+#define mp make_pair
+#define ll long long
+using namespace std;
+typedef pair<int, int> PII;
+
+int dp[1005][5][1005];
+int n, K, a[1005];
+
+int main(void) {
+ // freopen("3.in", "r", stdin);
+ cin >> n >> K;
+ for (int i = 1; i <= n; i++) cin >> a[i];
+
+ for (int i = 0; i < 1005; i++)
+ for (int j = 0; j < 4; j++)
+ for (int k = 0; k < 1005; k++)
+ dp[i][j][k] = INT_MIN;
+
+ dp[0][0][0] = 0;
+
+ for (int i = 1; i <= n; i++)
+ for (int j = 0; j <= 4; j++)
+ for (int k = 0; k < K; k++) {
+ if (j == 0) dp[i][j][k] = dp[i - 1][j][k];
+ else dp[i][j][k] = max(dp[i - 1][j][k], dp[i - 1][j - 1][((k - a[i]) % K + K) % K] + a[i]);
+ }
+
+
+ cout << dp[n][4][0];
+ return 0;
+} \ No newline at end of file