팬케이크맛 쿠키
시간 제한1초메모리 제한1024 MB
능력 게이지가 있는 맵에서 쿠키가 젤리를 가장 많이 모으도록 능력을 사용할 시점을 정하는 문제입니다.
문제
쿠키런 오븐브레이크는 점프와 슬라이드로 젤리를 최대한 많이 획득해 최대 점수를 얻는 게임이다. 스탠딩벨은 가장 좋아하는 팬케이크맛 쿠키의 설정값(, , )을 바꿔 가며 점수가 얼마나 변하는지 실험하기로 했다.
팬케이크맛 쿠키를 실험하기 위해 가로 , 세로 크기의 맵에서 아래 조건에 따라 플레이한다.
- 생성되는 맵의 가장 왼쪽 아래 좌표는 이고, 가장 오른쪽 위 좌표는 이다.
- 쿠키의 시작 위치는 이고, 초기 시간은 , 초기 점수는 이다.
- 팬케이크맛 쿠키는 1초에 x 좌표가 1칸씩 이동한다.
- 능력을 사용하면 만큼 떠오른다. 현재 위치가 이면 직선 경로로 까지 이동한다. 이동하는 중 가 설정된 높이 보다 커지면 높이는 로 유지된다.
- 능력을 사용하지 않으면 만큼 가라앉는다. 현재 위치가 이면 직선 경로로 까지 이동한다. 이동하는 중 가 설정된 바닥인 보다 작아지면 높이는 으로 유지된다.
- 능력을 사용할 때마다 능력치가 1 줄어든다.
- 능력을 사용하지 않은 경우 능력치가 1 회복된다.
- 능력치는 를 넘을 수 없고, 능력치가 이면 능력을 사용할 수 없다.
- 팬케이크맛 쿠키는 자신의 위치와 그 아래에 있는 젤리를 모두 먹는다.
이제 이 실험 환경에서 능력치 , , 를 조절하며 팬케이크맛 쿠키의 밸런스를 맞춰 보자. 아래 예시는 , , , , 로 설정된 맵에서 시점 별 PanCakeCookie 클래스의 정보이다.

밸런스는 쿠키가 얻을 수 있는 최대 점수를 기준으로 맞춘다. 각 시점 에 대해 의 선택이 정해져 있다고 보고, 시점의 점수가 최대가 되도록 능력 사용 여부를 정한다. 두 개 이상의 경로에서 얻는 최대 점수가 같다면 더 빠른 시점에 능력을 사용하는 경로를 우선한다. 이 경로를 저장하는 PanCakeCookie 클래스를 구현하라.
제한
능력치를 바꾸는 멤버 함수(setC, setU, setD)는 테스트 케이스당 최대 15번 호출된다. 각 능력치 변경 이후 setT 함수는 최대 100번 호출된다. 따라서 setT 함수는 최대 번 호출된다.