메모리 게임

짝을 이루는 R 곱하기 C 장의 카드가 뒤집힌 채 놓여 있을 때, 모든 카드를 제거하는 데 필요한 최선의 경우와 최악의 경우 행동 수를 구한다.

보통6게임 이론수학동적 계획법구현면접 대비아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

모래두지는 어디를 가나 R×CR \times C장의 카드를 들고 다닌다. 이 카드 더미에는 같은 무늬가 그려진 카드가 정확히 두 장씩 있다. 혼자 있을 때 짝 맞추기 게임을 하려고 카드를 가지고 다니는 것이다. 게임은 다음과 같이 진행한다.

  1. 카드를 잘 섞은 뒤, 무늬가 보이지 않도록 뒷면이 위로 오게 RRCC열로 늘어놓는다.

  2. 카드가 모두 없어질 때까지 다음 행동을 반복한다.

    1. 카드를 한 장 골라 뒤집어서 무늬를 본다.
    2. 남은 카드 중 한 장을 더 골라 뒤집어서 무늬를 본다.
    3. 두 카드의 무늬가 같으면 두 장 모두 게임에서 제외한다. 다르면 두 장 다 원래대로 뒷면이 위로 오게 덮어 놓는다.
  3. 게임에서 승리한다!

모래두지는 한 번이라도 뒤집어 본 카드의 무늬와 위치를 모두 기억하고, 최악의 경우에 드는 행동 횟수가 가장 작아지도록 전략을 세운다. 이 전략을 따를 때 운이 가장 좋은 경우의 행동 횟수와 운이 가장 나쁜 경우의 행동 횟수를 구하여라.

입력

첫째 줄에 정수 RR, CC가 공백 하나로 구분되어 주어진다. (1R,C101 \le R, C \le 10, R×CR \times C는 짝수)

출력

게임에서 승리하는 데 필요한 최소 행동 횟수와 최대 행동 횟수를 공백으로 구분해 한 줄에 출력한다.

힌트

R=2R = 2, C=2C = 2이면 카드가 네 장, 짝이 두 쌍이다. 첫 행동에서 무늬가 같은 두 장이 나왔다면 그 두 장을 제외하고, 두 번째 행동으로 남은 두 장을 제외하면 되므로 두 번으로 끝난다. 첫 행동에서 무늬가 다른 두 장이 나왔다면, 두 번째 행동에서 아직 뒤집지 않은 카드 한 장의 무늬를 확인한 뒤 첫 행동에서 본 카드 중 무늬가 같은 카드를 함께 뒤집어 제외하고, 세 번째 행동으로 남은 두 장을 제외한다. 그래서 최소는 두 번, 최대는 세 번이다.