From 3932f4c3b8e44a40f96fd2910a8e37a6ea10c617 Mon Sep 17 00:00:00 2001 From: oncsr Date: Wed, 12 Nov 2025 21:16:12 +0900 Subject: [PATCH] =?UTF-8?q?[20251112]=20BOJ=20/=20P4=20/=20=EC=9D=B4?= =?UTF-8?q?=EA=B2=8C=20=EA=B2=8C=EC=9E=84=EC=9D=B4=EB=83=90=3F=20/=20?= =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=A4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\354\236\204\354\235\264\353\203\220?.md" | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 "khj20006/202511/12 BOJ P4 \354\235\264\352\262\214 \352\262\214\354\236\204\354\235\264\353\203\220?.md" diff --git "a/khj20006/202511/12 BOJ P4 \354\235\264\352\262\214 \352\262\214\354\236\204\354\235\264\353\203\220?.md" "b/khj20006/202511/12 BOJ P4 \354\235\264\352\262\214 \352\262\214\354\236\204\354\235\264\353\203\220?.md" new file mode 100644 index 00000000..53d06969 --- /dev/null +++ "b/khj20006/202511/12 BOJ P4 \354\235\264\352\262\214 \352\262\214\354\236\204\354\235\264\353\203\220?.md" @@ -0,0 +1,115 @@ +```cpp +#include +using namespace std; + +int N; +int a[51]{}, b[51]{}; +int vis[111][111][122][122]{}; + +int main() { + cin.tie(0)->sync_with_stdio(0); + + cin >> N; + N >>= 1; + for (int i = 1; i <= N; i++) { + cin >> a[i] >> b[i]; + a[i] += 10; + b[i] += 10; + } + queue> q; + q.emplace(0, 0, 121, 121, 1); + vis[0][0][121][121] = 1; + while (!q.empty()) { + auto [c, d, e, f, t] = q.front(); q.pop(); + if (t == N + 1) return cout << "WIN", 0; + int x = a[t], y = b[t]; + + if ((x > c || abs(x - c) == 10) && (y > x || abs(y - x) == 10) && vis[y][d][e][f] != t + 1) { + q.emplace(y, d, e, f, t + 1); + vis[y][d][e][f] = t + 1; + } + if ((y > c || abs(y - c) == 10) && (x > y || abs(x - y) == 10) && vis[x][d][e][f] != t + 1) { + q.emplace(x, d, e, f, t + 1); + vis[x][d][e][f] = t + 1; + } + if ((x > c || abs(x - c) == 10) && (y > d || abs(y - d) == 10) && vis[x][y][e][f] != t + 1) { + q.emplace(x, y, e, f, t + 1); + vis[x][y][e][f] = t + 1; + } + if ((x > c || abs(x - c) == 10) && (y < e || abs(y - e) == 10) && vis[x][d][y][f] != t + 1) { + q.emplace(x, d, y, f, t + 1); + vis[x][d][y][f] = t + 1; + } + if ((x > c || abs(x - c) == 10) && (y < f || abs(y - f) == 10) && vis[x][d][e][y] != t + 1) { + q.emplace(x, d, e, y, t + 1); + vis[x][d][e][y] = t + 1; + } + + if ((x > d || abs(x - d) == 10) && (y > x || abs(y - x) == 10) && vis[c][y][e][f] != t + 1) { + q.emplace(c, y, e, f, t + 1); + vis[c][y][e][f] = t + 1; + } + if ((y > d || abs(y - d) == 10) && (x > y || abs(x - y) == 10) && vis[c][x][e][f] != t + 1) { + q.emplace(c, x, e, f, t + 1); + vis[c][x][e][f] = t + 1; + } + if ((x > d || abs(x - d) == 10) && (y > c || abs(y - c) == 10) && vis[y][x][e][f] != t + 1) { + q.emplace(y, x, e, f, t + 1); + vis[y][x][e][f] = t + 1; + } + if ((x > d || abs(x - d) == 10) && (y < e || abs(y - e) == 10) && vis[c][x][y][f] != t + 1) { + q.emplace(c, x, y, f, t + 1); + vis[c][x][y][f] = t + 1; + } + if ((x > d || abs(x - d) == 10) && (y < f || abs(y - f) == 10) && vis[c][x][e][y] != t + 1) { + q.emplace(c, x, e, y, t + 1); + vis[c][x][e][y] = t + 1; + } + + if ((x < e || abs(x - e) == 10) && (y < x || abs(y - x) == 10) && vis[c][d][y][f] != t + 1) { + q.emplace(c, d, y, f, t + 1); + vis[c][d][y][f] = t + 1; + } + if ((y < e || abs(y - e) == 10) && (x < y || abs(x - y) == 10) && vis[c][d][x][f] != t + 1) { + q.emplace(c, d, x, f, t + 1); + vis[c][d][x][f] = t + 1; + } + if ((x < e || abs(x - e) == 10) && (y > c || abs(y - c) == 10) && vis[y][d][x][f] != t + 1) { + q.emplace(y, d, x, f, t + 1); + vis[y][d][x][f] = t + 1; + } + if ((x < e || abs(x - e) == 10) && (y > d || abs(y - d) == 10) && vis[c][y][x][f] != t + 1) { + q.emplace(c, y, x, f, t + 1); + vis[c][y][x][f] = t + 1; + } + if ((x < e || abs(x - e) == 10) && (y < f || abs(y - f) == 10) && vis[c][d][x][y] != t + 1) { + q.emplace(c, d, x, y, t + 1); + vis[c][d][x][y] = t + 1; + } + + if ((x < f || abs(x - f) == 10) && (y < x || abs(y - x) == 10) && vis[c][d][e][y] != t + 1) { + q.emplace(c, d, e, y, t + 1); + vis[c][d][e][y] = t + 1; + } + if ((y < f || abs(y - f) == 10) && (x < y || abs(x - y) == 10) && vis[c][d][e][x] != t + 1) { + q.emplace(c, d, e, x, t + 1); + vis[c][d][e][x] = t + 1; + } + if ((x < f || abs(x - f) == 10) && (y > c || abs(y - c) == 10) && vis[y][d][e][x] != t + 1) { + q.emplace(y, d, e, x, t + 1); + vis[y][d][e][x] = t + 1; + } + if ((x < f || abs(x - f) == 10) && (y > d || abs(y - d) == 10) && vis[c][y][e][x] != t + 1) { + q.emplace(c, y, e, x, t + 1); + vis[c][y][e][x] = t + 1; + } + if ((x < f || abs(x - f) == 10) && (y < e || abs(y - e) == 10) && vis[c][d][y][x] != t + 1) { + q.emplace(c, d, y, x, t + 1); + vis[c][d][y][x] = t + 1; + } + + } + cout << "LOSE"; + +} +```