용이 되어 싸우기

시간 제한5초메모리 제한512 MB

요약
드래곤과 기사의 능력치가 주어질 때 공격, 강화, 회복, 약화 행동으로 기사를 쓰러뜨리는 최소 턴 수를 구하고, 불가능하면 보고한다.
난이도

보통10점 중 7점

유형
완전 탐색, 그리디, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

당신은 굴을 지키는 친절한 용이고, 굴을 노리는 탐욕스러운 기사와 싸우고 있다. 당신의 체력은 HdH_d, 공격력은 AdA_d이며 기사의 체력은 HkH_k, 공격력은 AkA_k이다. 어느 시점이든 당신의 체력이 0 이하가 되면 당신이 쓰러져 그 즉시 패배한다. 기사의 체력이 0 이하가 되면 기사가 쓰러지고 당신이 승리한다.

전투는 턴 단위로 진행된다. 각 턴에서 당신이 먼저 행동하며, 아래 네 가지 중 정확히 하나를 골라 실행한다.

  • 공격: 상대의 체력을 자신의 공격력만큼 줄인다.
  • 강화: 남은 전투 동안 자신의 공격력을 BB만큼 올린다.
  • 회복: 자신의 체력을 HdH_d로 만든다.
  • 약화: 남은 전투 동안 상대의 공격력을 DD만큼 낮춘다. 이 값이 0보다 작아지면 대신 0이 된다.

당신이 행동한 뒤 기사의 체력이 0보다 크면 기사가 공격하고, 그다음 턴이 끝난다. 기사를 쓰러뜨린 턴에는 기사가 행동하지 못하지만, 그 턴도 턴 수에 포함한다.

강화는 중첩된다. 강화할 때마다 공격력이 BB씩 더 올라간다. 약화도 같은 방식으로 중첩된다.

오늘 밤 축제에서 마을 사람들과 마시멜로를 구우려면 늦으면 안 되니, 기사를 최대한 빨리 쓰러뜨리려 한다. 기사를 쓰러뜨리는 데 필요한 최소 턴 수를 구하거나, 쓰러뜨릴 수 없다는 것을 판정하라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. 이어지는 TT개의 줄에 각각 여섯 정수 HdH_d, AdA_d, HkH_k, AkA_k, BB, DD가 공백으로 구분되어 주어진다.

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤Hd≤1041 \le H_d \le 10^4
  • 1≤Ad≤1041 \le A_d \le 10^4
  • 1≤Hk≤1041 \le H_k \le 10^4
  • 1≤Ak≤1041 \le A_k \le 10^4
  • 0≤B≤1040 \le B \le 10^4
  • 0≤D≤1040 \le D \le 10^4

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 기사를 쓰러뜨리는 데 필요한 최소 턴 수다. 기사를 쓰러뜨릴 수 없으면 y 자리에 IMPOSSIBLE을 출력한다.

힌트

첫 번째 테스트 케이스에서 당신의 체력은 11, 공격력은 5이고 기사의 체력은 16, 공격력은 5이다. 최적의 행동 순서 중 하나는 다음과 같다.

  • 1턴: 공격. 기사의 체력이 11이 된다. 이어서 기사가 공격해 당신의 체력이 6이 된다.
  • 2턴: 공격. 기사의 체력이 6이 된다. 이어서 기사가 공격해 당신의 체력이 1이 된다.
  • 3턴: 회복. 당신의 체력이 11로 돌아온다. 이어서 기사가 공격해 체력이 6이 된다. (이 턴에 공격했다면 다음 기사의 공격에 쓰러진다.)
  • 4턴: 공격. 기사의 체력이 1이 된다. 이어서 기사가 공격해 당신의 체력이 1이 된다.
  • 5턴: 공격. 기사의 체력이 -4가 된다. 그 즉시 승리하고 기사는 다시 공격하지 못한다.

두 번째 테스트 케이스에서 최적의 행동 순서 중 하나는 다음과 같다.

  • 1턴: 강화. 공격력이 3이 된다. 이어서 기사가 공격해 당신의 체력이 1이 된다.
  • 2턴: 공격. 기사의 체력이 0이 된다. 그 즉시 승리하고 기사는 다시 공격하지 못한다.

세 번째 테스트 케이스에서는 기사가 두 번만 공격해도 당신이 쓰러지고, 당신은 그 안에 충분한 피해를 줄 수 없다. 공격할 때마다 회복을 섞으면 전투를 무한히 끌 수는 있지만, 기사를 쓰러뜨리지는 못한다.

네 번째 테스트 케이스에서 최적의 행동 순서 중 하나는 공격, 약화, 강화, 공격, 공격이다.

예제1

  1. 예제 1

    입력
    4
    11 5 16 5 0 0
    3 1 3 2 2 0
    3 1 3 2 1 0
    2 1 5 1 1 1
    
    예상 출력
    Case #1: 5
    Case #2: 2
    Case #3: IMPOSSIBLE
    Case #4: 5