From 4b9dd2cbd82fa90c6ad31b15617afec633fe5266 Mon Sep 17 00:00:00 2001 From: 10o0o Date: Mon, 26 Feb 2024 20:26:28 +0900 Subject: [PATCH] =?UTF-8?q?=EB=91=90=20=EC=8A=A4=ED=8B=B0=EC=BB=A4=20/=20?= =?UTF-8?q?=EC=8B=A4=EB=B2=84=203=20/=2030=EB=B6=84=20/=20O?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._\354\265\234\354\236\254\354\204\240.cpp" | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 "week19/BOJ_16937/\353\221\220 \354\212\244\355\213\260\354\273\244_\354\265\234\354\236\254\354\204\240.cpp" diff --git "a/week19/BOJ_16937/\353\221\220 \354\212\244\355\213\260\354\273\244_\354\265\234\354\236\254\354\204\240.cpp" "b/week19/BOJ_16937/\353\221\220 \354\212\244\355\213\260\354\273\244_\354\265\234\354\236\254\354\204\240.cpp" new file mode 100644 index 0000000..825747c --- /dev/null +++ "b/week19/BOJ_16937/\353\221\220 \354\212\244\355\213\260\354\273\244_\354\265\234\354\236\254\354\204\240.cpp" @@ -0,0 +1,96 @@ +#include +#include +#include + +using namespace std; + +int checkFlag(int inr, int inc, int outr, int outc, int maxLen, int minLen) { + int r1 = max(outr, inr); + int c1 = outc + inc; + + int r2 = max(outr, inc); + int c2 = outc + inr; + + int r3 = outr + inc; + int c3 = max(outc, inr); + + int r4 = outr + inr; + int c4 = max(outc, inc); + + int max1 = max(r1, c1); + int min1 = min(r1, c1); + int max2 = max(r2, c2); + int min2 = min(r2, c2); + int max3 = max(r3, c3); + int min3 = min(r3, c3); + int max4 = max(r4, c4); + int min4 = min(r4, c4); + + + if (max1 <= maxLen && min1 <= minLen) { + return 1; + } + + if (max2 <= maxLen && min2 <= minLen) { + return 1; + } + + if (max3 <= maxLen && min3 <= minLen) { + return 1; + } + + if (max4 <= maxLen && min4 <= minLen) { + return 1; + } + + return 0; +} + +int main() { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + + int h, w, n; + + cin >> h >> w; + cin >> n; + + vector> board(h, vector(w, 0)); + vector> stickers(n, vector(2)); + + for (int i = 0; i < n; i += 1) { + int r, c; + cin >> r >> c; + + stickers[i] = {r, c}; + } + + sort(stickers.begin(), stickers.end(), [](const vector&a, const vector&b) { + return a[0] * a[1] > b[0] * b[1]; + }); + + int maxLen = max(h, w); + int minLen = min(h, w); + int sum = 0; + int count = 0; + + for (int i = 0; i < n - 1; i += 1) { + const int outr = stickers[i][0]; + const int outc = stickers[i][1]; + + + for (int j = i + 1; j < n; j += 1) { + const int inr = stickers[j][0]; + const int inc = stickers[j][1]; + + if (checkFlag(inr, inc, outr, outc, maxLen, minLen)) { + sum = max(sum, inr * inc + outr * outc); + break; + } + } + } + + cout << sum; + + return 0; +} \ No newline at end of file