리듬게임
시간 제한1초메모리 제한1024 MB
곡의 마디 수, 초기 BPM, 마디 경계에서의 변속 정보가 주어질 때 곡의 총 플레이 시간을 초 단위로 계산한다.
문제
레이는 리듬게임을 개발 중이다. 리듬게임에는 다양한 곡들이 존재하고, 레이는 곡을 선택하는 화면에 특정 곡의 총 플레이 시간을 미리 보여주는 기능을 추가하려고 한다. 곡이 어떻게 구성되었는지 알기 위해서는 마디, 박, BPM(Beats Per Minute), 변속에 대해서 알아야 한다.
- 마디는 곡을 구성하는 가장 기본적인 곡의 길이 단위이다. 한 곡은 여러 개의 마디로 이루어져 있다.
- 박은 마디 내부의 박자를 나타내는 단위이다. 레이의 리듬게임에 사용되는 곡은 모두가 박자이기 때문에, 한 마디는 개의 박으로 구성된다.
- BPM은 곡 진행속도의 단위이며, 분동안 몇 개의 박이 진행되는지를 나타낸다. 곡의 BPM이 이면 분동안 개의 박이 균일한 속도로 진행되는 것을 의미한다.
- BPM은 곡 중간에 변할 수 있으며, 이를 변속이라고 부른다. 각 마디가 시작 될 때 BPM이 바뀔 수 있다. 이렇게 바뀐 BPM은 다음 변속이 오거나, 곡이 끝날 때까지 유지된다.
어떤 곡의 총 마디 수, 초기 BPM과 변속 정보가 주어졌을 때, 해당 곡의 총 플레이 시간을 구해보자.
입력
첫 번째 줄에 플레이 시간을 계산할 곡의 마디 수 , 곡의 초기 BPM 와 곡의 변속 횟수 가 공백으로 구분되어 주어진다.
다음 개의 줄의 번째 줄에는 번째 변속이 일어나는 마디 , 변속으로 인해 변한 BPM인 가 주어진다.
는 모두 정수이며, 는 소숫점 최대 2자리까지 주어지는 양의 실수이다.
입력의 모든 변속은 마디 순서대로 주어지며, 한 마디에서 두 번 이상 변속이 일어나지 않는다. 또한, 첫 번째 마디에서는 변속이 일어나지 않는다. 즉, 이다.
출력
첫 번째 줄에 곡의 총 플레이 시간을 초 단위로 출력한다.
정답과 상대오차 또는 절대오차가 이하라면 정답으로 처리된다.
정확한 채점을 위해, 정답을 고정 소숫점으로 소숫점 아래 자리 이상 출력하는 것을 권장한다. 출력 방법은 힌트 문단을 참고하여라.
힌트
언어별로 정답인 ans를 소숫점 아래 자리까지 출력하는 방법은 다음과 같다. 이외의 언어는 각 언어의 레퍼런스 페이지를 참고하여라.
- C:
printf("%.12f\n", ans); - C++:
std::cout << std::fixed << std::setprecision(12) << ans << std::endl; - C#:
Console.WriteLine(String.Format("{0:F12}", ans)); - Java:
System.out.printf("%.12f\n", ans); - Python:
print(f'{ans:.12f}')