팬케이크맛 쿠키

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

쿠키런 오븐브레이크는 점프와 슬라이드로 젤리를 최대한 많이 획득하여 최대 점수를 달성하는 게임이다. 스탠딩벨은 자신이 가장 좋아하는 팬케이크맛 쿠키의 성능을 조절하기 위해, 쿠키의 설정값 (maxCmaxC, uu, dd)을 바꾸면서 점수가 얼마나 변하는지 실험을 하기로 했다.

팬케이크맛 쿠키를 실험하기 위해 가로 w+1w+1, 세로 h+1h+1 짜리 맵에서 아래의 조건에 따라 플레이하려고 한다.

  • 생성되는 맵의 가장 왼쪽 아래 좌표는 (0,0)(0,0)이고, 오른쪽 위 좌표는 (h,w)(h,w)이다.
  • 쿠키의 초기 시작 위치는 (0,0)(0,0)이며, 초기 시간은 00, 초기 점수는 00이다.
  • 팬케이크맛 쿠키는 11초당 11칸의 xx 좌표를 이동한다.
  • 팬케이크맛 쿠키가 능력을 사용하면 uu만큼 떠오른다. 현재 위치가 (x,y)(x, y)라면 (x+1,y+u)(x+1, y+u)지점으로 직선 경로로 이동한다. 직선 경로를 통해 이동하던 중 y+uy+u가 설정된 높이인 hh보다 크다면 이값은 hh로 유지된다.
  • 팬케이크맛 쿠키가 능력을 사용하지 않으면 dd만큼 가라앉는다. 현재 위치가 (x,y)(x, y)라면 (x+1,yd)(x+1, y-d)지점으로 직선 경로로 이동한다. 직선 경로를 통해 이동하던 중 ydy-d가 설정된 바닥인 00보다 작다면 이값은 00으로 유지된다.
  • 팬케이크맛 쿠키는 능력 사용 시 11만큼의 능력치가 감소한다.
  • 팬케이크맛 쿠키는 능력 미사용 시 11만큼의 능력치를 회복한다.
  • 팬케이크맛 쿠키의 능력치는 maxCmaxC를 초과할 수 없고, 능력치가 00인 경우 능력을 사용할 수 없다.
  • 팬케이크맛 쿠키는 자신의 위치와 자신의 위치보다 아래에 있는 젤리를 모두 먹는다.

이제부터 여러분은 위의 실험 환경에서 팬케이크맛 쿠키의 능력을 바꿔보면서 실험할 예정이다. 팬케이크맛 쿠키의 능력치 maxCmaxC, uu, dd 를 조절하면서 팬케이크맛 쿠키의 밸런스를 조절해보자. 아래의 예시는 w=4w=4, h=5h=5, u=3u=3, d=1d=1, maxC=2maxC=2로 설정된 맵에서 시점 tt별 PanCakeCookie 클래스의 정보이다.

팬케이크맛 쿠키의 능력 조정은 ‘획득할 수 있는 최대 점수’를 기준으로 설정해야 밸런스를 파악할 수 있다. 즉, 0<tw0 < t \leq w 인 각 시점 tt에 대해서 0<t<t0 < t' < t 의 선택이 정해져 있을 때, tt 시점의 점수를 최대화하도록 능력 사용 여부를 결정한다. 만약, 두가지 이상 경로에서 얻을 수 있는 최대 점수가 같다면 더 빠른 시점에 능력을 사용하는 경로를 우선시한다. 위 경로를 저장하고 있는 PanCakeCookie 클래스를 구현해보자.

제한

각각 테스트 케이스당 능력치를 변화하는 멤버함수(setC, setU, setD)는 최대 1515번 들어오며, 각 능력치 변화 이후 setT 함수는 최대 100100회 호출된다. 즉, setT 함수는 최대 1 5001\ 500회 호출된다.