롤러코스터
면접 대비시간 제한1초메모리 제한128 MB
롤러코스터의 각 구간에서 눈을 뜨면 재미와 어지러움이 늘고 눈을 감으면 어지러움이 K만큼 줄어든다. 어지러움이 항상 L 이하가 되도록 얻을 수 있는 최대 재미를 구한다.
- 난이도
보통10점 중 6점
- 유형
- 동적 계획법
- 정답자
- 아직 제출이 없습니다
문제
베시(Bessie)가 여행을 떠나 롤러코스터를 타고 있습니다! 베시는 롤러코스터 타는 것을 정말 좋아하지만, 안타깝게도 자주 어지러움을 느낍니다.
이 롤러코스터는 여러 개의 서로 다른 구간으로 이루어져 있고, 베시는 이 구간들을 순서대로 지나갑니다. 출발할 때 베시의 어지러움 수치와 재미 수치는 모두 0입니다. 각 구간에서 베시는 눈을 뜨거나 감을 수 있으며, 한 구간 동안에는 그 상태를 계속 유지해야 합니다.
- 어떤 구간에서 눈을 뜨면, 그 구간의 재미 값만큼 총 재미가 늘어나고 그 구간의 어지러움 값만큼 어지러움이 늘어납니다.
- 어떤 구간에서 눈을 감으면, 총 재미는 변하지 않지만 어지러움이 롤러코스터 전체에 걸쳐 정해진 일정한 값만큼 줄어듭니다. 단, 어지러움 수치는 절대 0 미만이 될 수 없습니다(0 미만으로 내려가게 되면 0이 됩니다).
만약 어느 순간이라도 베시의 어지러움이 정해진 한계를 넘으면 베시는 멀미를 하게 됩니다. 베시가 멀미하지 않으면서 얻을 수 있는 최대 재미를 구하세요.
입력
입력에는 여러 개의 테스트 케이스가 있습니다. 각 테스트 케이스는 세 정수가 있는 줄로 시작합니다.
N K L
여기서 ()은 이 롤러코스터의 구간 수, ()는 어떤 구간에서 눈을 감았을 때 어지러움이 줄어드는 양, ()은 베시가 견딜 수 있는 어지러움 한계입니다. 어지러움이 보다 커지는 순간 베시는 멀미를 합니다.
다음 개의 줄은 각각 한 구간을 설명하며 두 정수를 담고 있습니다.
F D
여기서 ()는 그 구간에서 눈을 떴을 때 늘어나는 재미, ()는 그 구간에서 눈을 떴을 때 늘어나는 어지러움입니다. 구간은 타는 순서대로 주어집니다. 입력은 세 개의 0이 있는 줄로 끝납니다.
출력
각 테스트 케이스마다, 베시가 어지러움 한계를 넘지 않으면서 얻을 수 있는 최대 재미를 정수 하나로 출력하세요. 각 정수는 공백 없이 한 줄에 출력하고, 답 사이에 빈 줄을 넣지 마세요.