목차

요세푸스 문제

ps
링크acmicpc.net/…
출처BOJ
문제 번호1158
문제명요세푸스 문제
레벨실버 5
분류

Order statistic tree

시간복잡도O(nlogn)
인풋사이즈n<=5000
사용한 언어Python
제출기록29452KB / 100ms
최고기록56ms
해결날짜2021/08/07
태그

[라이] 리스트/배열/연결 리스트

풀이

코드

"""Solution code for "BOJ 1158. 요세푸스 문제".

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

Tags: [OrderStatisticTree]
"""

from teflib import segmenttree


def main():
    N, K = [int(x) for x in input().split()]
    nums = segmenttree.OrderStatisticTree([1] * N)
    order = 0
    answer = []
    for _ in range(N):
        order = (order + K - 1) % nums.size()
        num = nums.kth(order + 1)
        nums.add(num, -1)
        answer.append(num + 1)

    print('<', end='')
    print(*answer, sep=', ', end='>')


if __name__ == '__main__':
    main()