만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

라스트 히트

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

요약
타워가 가장 가까운 살아 있는 몬스터를 쏘는 동안 막타를 쳐서 얻는 골드를 최대로 만듭니다.
난이도

보통10점 중 6점

유형
동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

다이애나는 즐겨 하는 게임에서 골드를 최대한 많이 벌고 싶어 한다. 다이애나는 자기 편 타워 가까이에 서 있고, 몬스터 NN마리와 마주 보고 있다. 이 상황에서 다이애나와 타워가 번갈아 몬스터를 공격하며, 다이애나가 먼저 공격한다. 자기 차례에 다이애나는 살아 있는 몬스터 하나를 골라 공격할 수 있고, 아무것도 하지 않고 차례를 넘길 수도 있다. 타워는 자기 차례에 타워에서 가장 가까운 살아 있는 몬스터를 공격한다. 죽은 몬스터는 다이애나도 타워도 공격하지 않는다.

다이애나가 공격하면 그 몬스터의 체력이 PP만큼 줄고, 타워가 공격하면 QQ만큼 준다. 체력이 11 미만으로 떨어진 몬스터는 죽는다. ii번 몬스터의 처음 체력은 HiH_i이다. 다이애나의 공격이 ii번 몬스터를 죽이면 다이애나가 골드 GiG_i를 받고, 타워의 공격이 죽이면 아무것도 받지 못한다. 다이애나가 얻을 수 있는 골드의 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 첫째 줄에는 PP, QQ, NN이 공백으로 구분되어 주어진다. 이어지는 NN개 줄 가운데 ii번째 줄에는 HiH_i와 GiG_i가 공백으로 구분되어 주어진다.

몬스터는 타워에서 가까운 순서대로 주어진다. 즉, 타워는 번호가 ii보다 작은 몬스터가 모두 죽은 뒤에야 ii번 몬스터를 공격한다.

제한

  • 1≤T≤1001 \le T \le 100
  • 20≤P≤20020 \le P \le 200
  • 20≤Q≤20020 \le Q \le 200
  • 1≤N≤1001 \le N \le 100
  • 1≤Hi≤2001 \le H_i \le 200
  • 0≤Gi≤1060 \le G_i \le 10^6

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 11부터 시작하는 테스트 케이스 번호이고, yy는 다이애나가 얻을 수 있는 골드의 최댓값이다.

힌트

예제 가운데 P=20P = 20, Q=60Q = 60인 테스트 케이스에서는 다이애나가 첫 번째 몬스터를 포기하는 편이 낫다. 처음 두 차례에 세 번째 몬스터를 공격해 체력을 8080까지 떨어뜨려 두면, 두 번째 몬스터와 세 번째 몬스터의 마지막 타격을 모두 다이애나가 가져간다.

예제2

  1. 예제 1

    입력
    2
    20 40 3
    100 100
    20 100
    60 100
    20 60 3
    80 100
    80 200
    120 300
    
    예상 출력
    Case #1: 300
    Case #2: 500
    
  2. 예제 2

    입력
    2
    200 20 1
    200 7
    20 200 1
    200 7
    
    예상 출력
    Case #1: 7
    Case #2: 0