From 769711126749f45ea23763be6f7961548bf760d2 Mon Sep 17 00:00:00 2001 From: eriedaberrie Date: Sat, 2 Dec 2023 21:35:11 -0800 Subject: [PATCH] 2023 day 2 --- .gitignore | 4 +++- 2023/2/main-1.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 2023/2/main-2.cpp | 43 +++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 2023/2/main-1.cpp create mode 100644 2023/2/main-2.cpp diff --git a/.gitignore b/.gitignore index ce1720a..43e89e3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ *.fasl *.o *.hi -data.txt \ No newline at end of file +*data*.txt +main +main-[0-9] \ No newline at end of file diff --git a/2023/2/main-1.cpp b/2023/2/main-1.cpp new file mode 100644 index 0000000..58173fb --- /dev/null +++ b/2023/2/main-1.cpp @@ -0,0 +1,57 @@ +#include +using namespace std; + +int main() { + ios::sync_with_stdio(0); + cin.tie(0); + + auto& cin = std::cin >> noskipws; + + int ret = 0, id = 0; + bool isPossible = true; + + for (;;) { + char c; + cin >> c; + switch (c) { + case 'G': + cin >> c; cin >> c; cin >> c; cin >> c; + cin >> id; + break; + case ':': case ',': case ';': + if (!isPossible) + break; + cin >> c; + int n; + cin >> n; + cin >> c; + cin >> c; + switch (c) { + case 'r': + if (n > 12) + isPossible = false; + break; + case 'g': + if (n > 13) + isPossible = false; + break; + case 'b': + if (n > 14) + isPossible = false; + break; + } + break; + case '\n': + if (cin.eof()) + goto end; + if (isPossible) + ret += id; + else + isPossible = true; + break; + } + } + +end: + cout << ret << '\n'; +} diff --git a/2023/2/main-2.cpp b/2023/2/main-2.cpp new file mode 100644 index 0000000..723cb2d --- /dev/null +++ b/2023/2/main-2.cpp @@ -0,0 +1,43 @@ +#include +using namespace std; + +int main() { + ios::sync_with_stdio(0); + cin.tie(0); + + auto& cin = std::cin >> noskipws; + + int ret = 0, id = 0, r = 0, g = 0, b = 0; + + for (;;) { + char c; + cin >> c; + switch (c) { + case 'G': + cin >> c; cin >> c; cin >> c; cin >> c; + cin >> id; + break; + case ':': case ',': case ';': + cin >> c; + int n; + cin >> n; + cin >> c; + cin >> c; + switch (c) { + case 'r': r = max(n, r); break; + case 'g': g = max(n, g); break; + case 'b': b = max(n, b); break; + } + break; + case '\n': + if (cin.eof()) + goto end; + ret += r * g * b; + r = 0; g = 0; b = 0; + break; + } + } + +end: + cout << ret << '\n'; +}