만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

마법 카드 (어려움)

시간 제한10초메모리 제한1024 MB

요약
1부터 N까지 서로 다른 K장의 카드에서 한 장을 버리고, 남은 K-1장의 순서로 버린 카드를 알아내는 전략을 설계합니다.
난이도

보통10점 중 7점

유형
조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

마술사 Pak Dengklek이 마술을 선보인다. 조수 Pak Ganesh에게는 1부터 N까지 번호가 매겨진 카드 N장이 있다. 관객 한 명이 무대에 올라 서로 다른 카드 K장을 골라 Pak Ganesh에게 건넨다. Pak Ganesh는 카드를 보고 K장 중 한 장을 버린 뒤, 남은 K-1장을 원하는 순서로 탁자 위에 놓는다. 그러면 Pak Dengklek은 탁자 위의 K-1장을 보고 Pak Ganesh가 버린 카드를 반드시 알아맞혀야 한다.

마술이 시작된 뒤에는 Pak Dengklek과 Pak Ganesh가 소통할 수 없지만, 마술을 시작하기 전에 전략을 미리 정할 수 있다. 여러분이 두 사람의 전략을 설계해 도와야 한다. 이번에는 같은 N과 K 값으로 마술을 Q번 진행한다.

제한

  • 2≤K≤82 ≤ K ≤ 8
  • K≤NK ≤ N
  • 주어진 NN과 KK에 대해 마술사와 조수의 전략이 존재한다
  • 1≤Q≤50 0001 ≤ Q ≤ 50\,000

choose_cards가 호출될 때마다:

  • 0≤i≤K−10 ≤ i ≤ K - 1인 모든 ii에 대해 1≤cards[i]≤N1 ≤ cards[i] ≤ N이다.
  • cards의 모든 원소는 서로 다르다.

find_discarded_card가 호출될 때마다:

  • 주어지는 모든 입력은 choose_cards가 Q번 반환한 값과 같고, 순서만 무작위로 섞여 있다.

예제1

  1. 예제 1

    입력
    3 3 1
    1 2 3
    
    예상 출력
    2 3