#include<cstdio> #include<cstring> int t, n, dp[100][100][100], a[100], l, r, lc, rc, g; int f(int s, int e, int c) { if (c < 0 || s > g || e < g || s == e) return 1; int &ret = dp[s][e][c]; if (!~ret) ret = !f(s + 1, e, s == l ? lc + c : c) | !f(s, e - 1, e == r ? rc + c : c) | !f(s, e, c - 1); return ret; } int main() { for (scanf("%d", &t); t--;) { scanf("%d", &n); lc = 0; rc = 0; memset(dp, -1, sizeof(dp)); for (int i = 0; i < n; i++) { scanf("%d", a + i); if (a[i] == 1) l = r = g = i; } for (; l && a[l - 1] > a[l];) l--; for (; r < n - 1 && a[r] < a[r + 1];) r++; int i = l, j = r; for (; i && a[i - 1] < a[i]; i--) lc++; for (; j < n - 1 && a[j] > a[j + 1]; j++) rc++; puts(f(l, r, i + n - 1 - j) ? "Alice" : "Bob"); } return 0; }
10563번: Number Game
라벨:
다시풀예정
,
BOJ
,
topological game
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기