From 205f243379919b7830726f9dcc4ae7d33c84e857 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 19 Nov 2021 11:57:35 +0800 Subject: import(life): Add algorithm experiment 5. --- works/life/algorithm-experiment/.DS_Store | Bin 6148 -> 0 bytes works/life/algorithm-experiment/5.1a.cpp | 25 ++++++++++++++++++++++++ works/life/algorithm-experiment/5.1b.cpp | 25 ++++++++++++++++++++++++ works/life/algorithm-experiment/5.1c.cpp | 24 +++++++++++++++++++++++ works/life/algorithm-experiment/5.2a.cpp | 31 ++++++++++++++++++++++++++++++ works/life/algorithm-experiment/5.2b.cpp | 28 +++++++++++++++++++++++++++ 6 files changed, 133 insertions(+) delete mode 100644 works/life/algorithm-experiment/.DS_Store create mode 100644 works/life/algorithm-experiment/5.1a.cpp create mode 100644 works/life/algorithm-experiment/5.1b.cpp create mode 100644 works/life/algorithm-experiment/5.1c.cpp create mode 100644 works/life/algorithm-experiment/5.2a.cpp create mode 100644 works/life/algorithm-experiment/5.2b.cpp (limited to 'works/life') diff --git a/works/life/algorithm-experiment/.DS_Store b/works/life/algorithm-experiment/.DS_Store deleted file mode 100644 index 58e50b9..0000000 Binary files a/works/life/algorithm-experiment/.DS_Store and /dev/null 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 +#include +#include + +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 +#include +#include + +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 +#include +#include + +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 +#include +#include + +int main() { + std::vector votes; + + long long v; + while (std::cin >> v) { + votes.push_back(v); + } + + std::unordered_map 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 +#include +#include + +int main() { + std::vector votes; + + long long v; + while (std::cin >> v) { + votes.push_back(v); + } + + std::unordered_map 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; +} -- cgit v1.2.3