ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 13575 |
문제명 | 보석 가게 |
레벨 | 플래티넘 1 |
분류 |
고속 푸리에 변환 |
시간복잡도 | O(knlog(kn)) |
인풋사이즈 | n<=1000, k<=1000 |
사용한 언어 | Python |
제출기록 | 327724KB / 14020ms |
최고기록 | 14020ms |
해결날짜 | 2021/02/20 |
"""Solution code for "BOJ 13575. 보석 가게".
- Problem link: https://www.acmicpc.net/problem/13575
- Solution link: http://www.teferi.net/ps/problems/boj/13575
"""
from teflib import fft
def main():
N, K = [int(x) for x in input().split()] # pylint: disable=unused-variable
a = [int(x) for x in input().split()]
jewel = [0] * (max(a) + 1)
for a_i in a:
jewel[a_i] = 1
# Computes answer = jewel ^ K.
answer = [1]
for c in reversed(bin(K)):
if c == '1':
answer = [0 if x == 0 else 1 for x in fft.multiply(answer, jewel)]
jewel = [0 if x == 0 else 1 for x in fft.multiply(jewel, jewel)]
print(' '.join(str(i) for i, x in enumerate(answer) if x == 1))
if __name__ == '__main__':
main()