From baec51f1922f516669b1b7064293aa402b615249 Mon Sep 17 00:00:00 2001 From: SW <34030977+Kaifeel@users.noreply.github.com> Date: Sun, 16 Aug 2026 00:06:51 +0900 Subject: [PATCH] 2026-08-16 Cookies and Greedy Takahashi --- Kaifeel/README.md | 2 + .../Cookies and Greedy Takahashi.cpp" | 60 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 "Kaifeel/\352\265\254\355\230\204/Cookies and Greedy Takahashi.cpp" diff --git a/Kaifeel/README.md b/Kaifeel/README.md index d1ab9d6..4e79f30 100644 --- a/Kaifeel/README.md +++ b/Kaifeel/README.md @@ -7,3 +7,5 @@ | 5차시 | 2026.07.01 | 최소 편집 | #32| | 6차시 | 2026.07.07 | 트로미노 | #35| | 7차시 | 2026.07.13 | 다리만들기 2 | #36| +| 8차시 | 2026.08.10| Maximal Rectangle | #37| +| 9차시 | 2026.08.16| Cookies and Greedy Takahashi | #39| diff --git "a/Kaifeel/\352\265\254\355\230\204/Cookies and Greedy Takahashi.cpp" "b/Kaifeel/\352\265\254\355\230\204/Cookies and Greedy Takahashi.cpp" new file mode 100644 index 0000000..fec4eab --- /dev/null +++ "b/Kaifeel/\352\265\254\355\230\204/Cookies and Greedy Takahashi.cpp" @@ -0,0 +1,60 @@ +#include +#include +#include +#include + +using namespace std; +typedef long long ll; + +int main() +{ + int n; + cin >> n; + vector plus; + + vector minus; + + while (n--) + { + ll num; + cin >> num; + if (num > 0) + plus.push_back(num); + else + minus.push_back(num); + } + + sort(plus.begin(), plus.end()); + sort(minus.rbegin(), minus.rend()); + + int i = 0, j = 0; + ll ans = 0; + ll cur = 0; + + while (i != minus.size() || j != plus.size()) + { + + ll leftD = LLONG_MAX; + ll rightD = LLONG_MAX; + + if (i < minus.size()) + leftD = abs(minus[i] - cur); + if (j < plus.size()) + rightD = abs(plus[j] - cur); + + if (leftD <= rightD) + { + ans += leftD; + cur = minus[i]; + i++; + } + else + { + ans += rightD; + cur = plus[j]; + j++; + } + } + + cout << ans; +} \ No newline at end of file