aboutsummaryrefslogtreecommitdiff
path: root/works/life
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-11-19 11:57:35 +0800
committercrupest <crupest@outlook.com>2021-11-19 11:57:35 +0800
commit205f243379919b7830726f9dcc4ae7d33c84e857 (patch)
treeb18b433bcd9d1d9bb38e6da18c880f8fddb1cea9 /works/life
parent3c9273676b785c6ba4fc11e865851ba2319f41bf (diff)
downloadcrupest-205f243379919b7830726f9dcc4ae7d33c84e857.tar.gz
crupest-205f243379919b7830726f9dcc4ae7d33c84e857.tar.bz2
crupest-205f243379919b7830726f9dcc4ae7d33c84e857.zip
import(life): Add algorithm experiment 5.
Diffstat (limited to 'works/life')
-rw-r--r--works/life/algorithm-experiment/.DS_Storebin6148 -> 0 bytes
-rw-r--r--works/life/algorithm-experiment/5.1a.cpp25
-rw-r--r--works/life/algorithm-experiment/5.1b.cpp25
-rw-r--r--works/life/algorithm-experiment/5.1c.cpp24
-rw-r--r--works/life/algorithm-experiment/5.2a.cpp31
-rw-r--r--works/life/algorithm-experiment/5.2b.cpp28
6 files changed, 133 insertions, 0 deletions
diff --git a/works/life/algorithm-experiment/.DS_Store b/works/life/algorithm-experiment/.DS_Store
deleted file mode 100644
index 58e50b9..0000000
--- a/works/life/algorithm-experiment/.DS_Store
+++ /dev/null
Binary files differ
diff --git a/works/life/algorithm-experiment/5.1a.cpp b/works/life/algorithm-experiment/5.1a.cpp
new file mode 100644
index 0000000..d0d442f
--- /dev/null
+++ b/works/life/algorithm-experiment/5.1a.cpp
@@ -0,0 +1,25 @@
+#include <bitset>
+#include <ios>
+#include <iostream>
+
+std::bitset<10000000> f;
+
+int main() {
+ std::ios_base::sync_with_stdio(false);
+ std::cin.tie(nullptr);
+
+ while (true) {
+ long long current;
+ std::cin >> current;
+
+ auto b = f[current - 10000000];
+ if (b) {
+ std::cout << current;
+ break;
+ } else {
+ b = true;
+ }
+ }
+
+ return 0;
+}
diff --git a/works/life/algorithm-experiment/5.1b.cpp b/works/life/algorithm-experiment/5.1b.cpp
new file mode 100644
index 0000000..a6dd32e
--- /dev/null
+++ b/works/life/algorithm-experiment/5.1b.cpp
@@ -0,0 +1,25 @@
+#include <bitset>
+#include <ios>
+#include <iostream>
+
+std::bitset<10000000> f;
+
+int main() {
+ std::ios_base::sync_with_stdio(false);
+ std::cin.tie(nullptr);
+
+ long long current;
+
+ while (std::cin >> current) {
+ f[current - 10000000].flip();
+ }
+
+ for (int i = 1; i < 10000000; ++i) {
+ if (f[i]) {
+ std::cout << i + 10000000;
+ break;
+ }
+ }
+
+ return 0;
+}
diff --git a/works/life/algorithm-experiment/5.1c.cpp b/works/life/algorithm-experiment/5.1c.cpp
new file mode 100644
index 0000000..f38d199
--- /dev/null
+++ b/works/life/algorithm-experiment/5.1c.cpp
@@ -0,0 +1,24 @@
+#include <bitset>
+#include <ios>
+#include <iostream>
+
+std::bitset<10000000> f;
+
+int main() {
+ std::ios_base::sync_with_stdio(false);
+ std::cin.tie(nullptr);
+
+ long long current;
+
+ while (std::cin >> current) {
+ f[current - 10000000].flip();
+ }
+
+ for (int i = 1; i < 10000000; ++i) {
+ if (!f[i]) {
+ std::cout << i + 10000000 << '\n';
+ }
+ }
+
+ return 0;
+}
diff --git a/works/life/algorithm-experiment/5.2a.cpp b/works/life/algorithm-experiment/5.2a.cpp
new file mode 100644
index 0000000..f458a90
--- /dev/null
+++ b/works/life/algorithm-experiment/5.2a.cpp
@@ -0,0 +1,31 @@
+#include <iostream>
+#include <unordered_map>
+#include <vector>
+
+int main() {
+ std::vector<long long> votes;
+
+ long long v;
+ while (std::cin >> v) {
+ votes.push_back(v);
+ }
+
+ std::unordered_map<long long, long long> counts;
+ for (auto v : votes) {
+ counts[v]++;
+ }
+
+ long long max_count = 0;
+ long long max_id = 0;
+
+ for (auto it = counts.begin(); it != counts.end(); ++it) {
+ if (it->second > max_count) {
+ max_count = it->second;
+ max_id = it->first;
+ }
+ }
+
+ std::cout << max_id << std::endl;
+
+ return 0;
+} \ No newline at end of file
diff --git a/works/life/algorithm-experiment/5.2b.cpp b/works/life/algorithm-experiment/5.2b.cpp
new file mode 100644
index 0000000..d062ae0
--- /dev/null
+++ b/works/life/algorithm-experiment/5.2b.cpp
@@ -0,0 +1,28 @@
+#include <iostream>
+#include <unordered_map>
+#include <vector>
+
+int main() {
+ std::vector<long long> votes;
+
+ long long v;
+ while (std::cin >> v) {
+ votes.push_back(v);
+ }
+
+ std::unordered_map<long long, long long> counts;
+ for (auto v : votes) {
+ counts[v]++;
+ }
+
+ // Get ids with votes greater than half of the total votes.
+ long long half_votes = votes.size() / 2;
+
+ for (auto it = counts.begin(); it != counts.end(); ++it) {
+ if (it->second > half_votes) {
+ std::cout << it->first << std::endl;
+ }
+ }
+
+ return 0;
+}