쓰레기 수거
시간 제한1초메모리 제한128 MB
쓰레기 수거차가 지점들을 순서대로 방문하며 적재량이 가득 차거나 초과할 때 처리장으로 돌아가는 과정을 시뮬레이션해 총 이동 거리를 구합니다.
문제
쓰레기장은 위치 0에 있고, 모든 수거 지점은 같은 직선 위에 있다. 쓰레기차는 쓰레기장에서 가까운 지점부터 차례로 방문하며, 각 지점의 쓰레기는 반드시 한 번에 모두 싣는다.
쓰레기차는 다음 상황 중 하나가 발생하면 현재 위치에서 쓰레기장으로 돌아가 싣고 있던 쓰레기를 비운다.
- 쓰레기를 실은 뒤 적재량이 용량과 같아진 경우
- 현재 지점의 쓰레기를 실으면 용량을 초과하는 경우
- 더 방문할 수거 지점이 없는 경우
두 번째 경우에는 쓰레기차가 이미 현재 지점에 도착한 상태이다. 이때 쓰레기를 싣기 전에 쓰레기장에 다녀온 뒤, 같은 지점으로 돌아와 그 지점의 쓰레기를 싣는다. 한 지점의 쓰레기 중 일부만 싣고 나머지를 나중에 싣는 것은 허용되지 않는다.
쓰레기차의 용량과 각 지점의 거리 및 쓰레기 양이 주어질 때, 모든 쓰레기를 수거하고 쓰레기차가 쓰레기장으로 돌아올 때까지 이동한 총 거리를 구하라.
입력
첫 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 줄에는 쓰레기차의 용량 W와 수거 지점의 개수 N이 주어진다. (1 <= W <= 1000, 1 <= N <= 1000)
다음 N개의 줄에는 i번째 지점의 쓰레기장으로부터의 거리 x_i와 그 지점의 쓰레기 양 w_i가 주어진다. 모든 x_i는 서로 다르며, 지점들은 x_i가 작은 순서대로 주어진다. (0 <= x_i <= 100000, 1 <= w_i <= W)
출력
각 테스트 케이스마다 모든 쓰레기를 수거하고 쓰레기차가 쓰레기장으로 돌아올 때까지 이동한 총 거리를 출력한다.