목차

룩, 비숍, 킹, 나이트, 궁전 게임

ps
링크acmicpc.net/…
출처BOJ
문제 번호16880
문제명룩, 비숍, 킹, 나이트, 궁전 게임
레벨다이아몬드 5
분류

스프라그-그런디 정리

시간복잡도O(n)
인풋사이즈n<=300,000
사용한 언어Python
제출기록30840KB / 432ms
최고기록432ms
해결날짜2022/07/04

풀이

코드

"""Solution code for "BOJ 16880. 룩, 비숍, 킹, 나이트, 궁전 게임".

- Problem link: https://www.acmicpc.net/problem/16880
- Solution link: http://www.teferi.net/ps/problems/boj/16880

Tags: [Sprague-Grundy]
"""

import sys


def main():
    N = int(sys.stdin.readline())
    grundy_num = 0
    for _ in range(N):
        x, y, c = sys.stdin.readline().split()
        x, y = int(x), int(y)
        if c == 'R':
            grundy = x ^ y
        elif c == 'B':
            grundy = min(x, y)
        elif c == 'K':
            grundy = abs(x - y) % 2 + min(x, y) % 2 * 2
        elif c == 'N':
            m = min(x, y) % 3
            grundy = (m - 1) if abs(x - y) < m else m
        elif c == 'P':
            grundy = ((x // 3) ^ (y // 3)) * 3 + (x + y) % 3
        grundy_num ^= grundy

    print('koosaga' if grundy_num else 'cubelover')


if __name__ == '__main__':
    main()