From 813bf64be52843ccab4a6e5b1e833d0cf63b11bb Mon Sep 17 00:00:00 2001 From: eriedaberrie Date: Sun, 10 Dec 2023 21:33:30 -0800 Subject: [PATCH] 2023 day 11 --- 2023/11/main-1.cpp | 53 +++++++++++++++++++++++++++++++++++++ 2023/11/main-2.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 2023/11/main-1.cpp create mode 100644 2023/11/main-2.cpp diff --git a/2023/11/main-1.cpp b/2023/11/main-1.cpp new file mode 100644 index 0000000..17bdcf3 --- /dev/null +++ b/2023/11/main-1.cpp @@ -0,0 +1,53 @@ +#include +using namespace std; + +int main() { + ios::sync_with_stdio(0); + cin.tie(0); + + vector lines; + string line; + while (getline(cin, line) && !line.empty()) { + lines.push_back(line); + for (char c : line) { + if (c != '.') { + goto next1; + } + } + lines.push_back(line); + next1:; + } + + for (unsigned int col = 0; col < lines[0].size(); col++) { + for (auto& r : lines) { + if (r[col] != '.') { + goto next2; + } + } + for (auto& l : lines) { + l.insert(l.begin() + col, '.'); + } + col++; + next2:; + } + + vector> gs; + for (unsigned int row = 0; row < lines.size(); row++) { + for (unsigned int col = 0; col < lines[row].size(); col++) { + if (lines[row][col] == '#') { + gs.push_back(make_pair(row, col)); + } + } + } + + int ret = 0; + for (unsigned int i = 0; i < gs.size() - 1; i++) { + auto& gi = gs[i]; + for (unsigned int j = i + 1; j < gs.size(); j++) { + auto& gj = gs[j]; + ret += abs(gi.first - gj.first) + abs(gi.second - gj.second); + } + } + + cout << ret << '\n'; +} diff --git a/2023/11/main-2.cpp b/2023/11/main-2.cpp new file mode 100644 index 0000000..c17d1aa --- /dev/null +++ b/2023/11/main-2.cpp @@ -0,0 +1,65 @@ +#include +using namespace std; + +int main() { + ios::sync_with_stdio(0); + cin.tie(0); + + vector lines; + string line; + while (getline(cin, line) && !line.empty()) { + lines.push_back(line); + } + + vector erows, ecols; + + for (unsigned int row = 0; row < lines.size(); row++) { + for (char c : lines[row]) { + if (c != '.') { + goto next1; + } + } + erows.push_back(row); + next1:; + } + + for (unsigned int col = 0; col < lines[0].size(); col++) { + for (auto& r : lines) { + if (r[col] != '.') { + goto next2; + } + } + ecols.push_back(col); + next2:; + } + + vector> gs; + for (unsigned int row = 0; row < lines.size(); row++) { + for (unsigned int col = 0; col < lines[row].size(); col++) { + if (lines[row][col] == '#') { + gs.push_back(make_pair(row, col)); + } + } + } + + long ret = 0; + for (unsigned int i = 0; i < gs.size() - 1; i++) { + auto& gi = gs[i]; + for (unsigned int j = i + 1; j < gs.size(); j++) { + auto& gj = gs[j]; + ret += abs(gi.first - gj.first) + abs(gi.second - gj.second); + for (int erow : erows) { + if ((erow - gi.first) * (erow - gj.first) < 0) { + ret += 999'999; + } + } + for (int ecol : ecols) { + if ((ecol - gi.second) * (ecol - gj.second) < 0) { + ret += 999'999; + } + } + } + } + + cout << ret << '\n'; +}