아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

나비의 간식을 훔쳐먹은 춘배

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

요약
매 턴 웅크리기, K만큼 멀어지기, 다음 냥냥펀치 한 번 무시하기 중 하나를 골라 N번의 공격 후 남는 체력을 최대로 만든다.
난이도

보통10점 중 6점

유형
완전 탐색, 동적 계획법, 시뮬레이션, 비트 연산
정답자
아직 제출이 없습니다

문제

춘배가 나비의 간식을 뺏어 먹고 도망가자 화난 나비는 냥냥펀치를 날리려 한다.

냥냥펀치 : 문제에서 주어진 R_iR\_i에서 춘배와 나비 사이의 거리를 뺀 값만큼 춘배의 체력이 깎인다. 데미지가 1010이고 현재 춘배와 나비 사이의 거리가 33일 경우 77만큼 체력이 깎인다. 체력이 깎이는 양은 음수가 될 수 없다.

춘배는 도망가다 상자를 발견해서 숨게 되었고 자신이 가진 33가지 기술로 대응하려 한다.

웅크리기네발로 걷기깜짝 놀라게 하기
  • 웅크리기: 나비가 공격할 시 데미지가 절반 감소한다. 이는 데미지가 거리만큼 약해진 후 계산된다. 단, 감소 후 데미지의 소수점 아래는 버린다.
  • 네발로 걷기: 문제에서 주어진 값 KK 만큼 나비와 멀어지는 방향으로 이동할 수 있다.
  • 깜짝 놀라게 하기: 나비의 다음 행동을 11번 무시한다. ii번째 사용 할 시 R_i+1R\_{i+1}를 무시한다. 단 11번 사용할 수 있고 NN번째에 사용 시 아무 일도 일어나지 않는다.

한 턴은 춘배의 기술, 냥냥펀치, 데미지 계산의 순서대로 실행된다. 춘배는 턴마다 11개의 기술만 쓸 수 있다. 나비가 모든 NN개의 냥냥펀치를 하여 지칠 때까지 춘배가 유지할 수 있는 최대 체력을 알아보자. 어떤 행동을 해도 체력이 00이하가 된다면 −1-1을 출력한다.

입력

첫 번째 줄에 나비가 지칠 때까지의 냥냥펀치 수 NN이 정수로 주어진다. (1≤N≤18)(1 \le N \le 18)

두 번째 줄에 춘배의 체력 HH, 현재 나비 사이의 거리 DD, 춘배가 네발로 걷기 시 이동하는 거리 KK가 공백으로 구분되어 주어진다. (1≤H≤1000,1≤D≤10,1≤K≤3)(1 \le H \le 1000, 1 \le D \le 10, 1 \le K \le 3)

세 번째 줄부터 NN개의 줄에 걸쳐 ii번째 냥냥펀치의 데미지 R_iR\_i가 주어진다. (1≤R_i≤100)(1 \le R\_i \le 100)

출력

춘배가 가질 수 있는 최대 체력을 출력한다. 답이 00 이하일 경우 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    1
    10 2 1
    10
    
    예상 출력
    6
    
  2. 예제 2

    입력
    1
    10 2 2
    1
    
    예상 출력
    10
    
  3. 예제 3

    입력
    4
    100 3 3
    20
    100
    20
    20
    
    예상 출력
    69