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

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

배치 스케줄링

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

요약
순서가 정해진 작업을 연속한 묶음으로 나누고 각 묶음마다 준비 시간을 지불할 때, 가중 완료 시간 합의 최솟값을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 누적 합, 그리디
정답자
아직 제출이 없습니다

문제

한 대의 기계에서 11번부터 NN번까지 번호가 매겨진 NN개의 작업을 순서대로 처리한다. 작업 순서 1,2,…,N1, 2, \dots, N을 하나 이상의 배치(batch) 로 나눈다. 각 배치는 순서상 연속한 작업들의 묶음이다.

처리는 시간 00에 시작한다. 배치는 첫 번째 배치부터 차례로 하나씩 처리하며, 더 작은 번호의 작업을 포함한 배치를 먼저 처리한다. 각 배치를 시작하기 전에는 기계를 준비하는 데 준비 시간 SS가 필요하다.

어떤 배치가 작업 x,x+1,…,x+kx, x+1, \dots, x+k로 이루어져 있고 시간 tt에 시작한다면, 이 배치에 속한 모든 작업의 출력(완료) 시각은 t+S+(Tx+Tx+1+⋯+Tx+k)t + S + (T_x + T_{x+1} + \dots + T_{x+k}) 이다. 기계는 한 배치의 모든 결과를 이 시각에 동시에 출력하며, 바로 이어서 다음 배치가 시작된다.

각 작업 ii에는 처리 시간 TiT_i와 비용 계수 FiF_i가 주어진다. 작업 ii의 출력 시각을 OiO_i라 하면 그 작업의 비용은 Oi×FiO_i \times F_i이다. 한 분할의 전체 비용은 모든 작업 비용의 합이다.

준비 시간과 각 작업의 처리 시간 및 비용 계수가 주어질 때, 가능한 전체 비용의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 작업의 수 NN이 주어진다 (1≤N≤100001 \le N \le 10000).

둘째 줄에 준비 시간 SS가 정수로 주어진다 (0≤S≤500 \le S \le 50).

이어지는 NN개의 줄에는 작업 1,2,…,N1, 2, \dots, N의 정보가 순서대로 주어진다. 각 줄에는 두 정수 TiT_i와 FiF_i가 주어지며, TiT_i는 그 작업의 처리 시간 (1≤Ti≤1001 \le T_i \le 100), FiF_i는 비용 계수 (1≤Fi≤1001 \le F_i \le 100)이다.

출력

가능한 전체 비용의 최솟값을 한 줄에 하나의 정수로 출력한다.

힌트

모든 테스트 케이스에서, 어떤 분할이든 그 전체 비용은 231−12^{31} - 1을 넘지 않는다.

예제2

  1. 예제 1

    입력
    2
    50
    100 100
    100 100
    
    예상 출력
    45000
    
  2. 예제 2

    입력
    5
    1
    1 3
    3 2
    4 3
    2 3
    1 4
    
    예상 출력
    153