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

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

여행

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

요약
길이 합이 D 이하가 되도록 n개 도로를 연속한 구간으로 나누고, 각 구간의 인상 계수 합의 제곱을 모두 더한 값의 최솟값을 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 슬라이딩 윈도우, 누적 합, 분할 정복
정답자
아직 제출이 없습니다

문제

바이트아사르(Byteasar)는 바이트랜드를 도는 자전거 여행을 계획하고 있다. 방문할 마을 n+1n+1개와 이웃한 두 마을을 차례로 잇는 도로 nn개를 골랐다. 각 도로에는 길이와 인상 계수(impression factor)라는 두 값이 있으며, 인상 계수는 양수일 수도 음수일 수도 있다.

이제 바이트아사르는 여행 전체를 여러 구간으로 나누어 하루에 한 구간씩 다니려고 한다. 각 구간은 고른 마을 중 하나에서 시작해 다른 마을에서 끝나야 하고, 한 구간의 총 길이는 DD 킬로미터를 넘을 수 없다. 한 구간의 인상 계수는 그 구간에 속한 도로들의 인상 계수 합을 제곱한 값이다. 즉, 어떤 구간이 인상 계수가 w1,w2,…,wmw_1, w_2, \dots, w_m인 도로들로 이루어져 있으면 그 구간의 인상 계수는 (w1+w2+⋯+wm)2(w_1 + w_2 + \dots + w_m)^2이다.

바이트아사르는 여행 전체 구간들의 인상 계수 합을 최대한 작게 만들고 싶다. 그가 얻을 수 있는 가장 작은 합을 구하여라.

입력

첫째 줄에 두 정수 nn과 DD가 주어진다 (1≤n≤100 0001 \le n \le 100\,000, 1≤D≤1091 \le D \le 10^9). 각각 도로의 수와 한 구간의 최대 길이를 뜻한다.

다음 nn개의 줄에는 각각 두 정수 did_i와 wiw_i가 주어진다 (1≤di≤D1 \le d_i \le D, −10 000≤wi≤10 000-10\,000 \le w_i \le 10\,000). 각각 ii번째 도로의 길이와 인상 계수이다.

출력

여행의 모든 구간의 인상 계수 합의 최솟값을 정수 하나로 출력한다.

예제5

  1. 예제 1

    입력
    5 15
    7 4
    8 -5
    4 2
    1 -1
    2 4
    
    예상 출력
    14
    
  2. 예제 2

    입력
    1 10
    5 -3
    
    예상 출력
    9
    
  3. 예제 3

    입력
    2 100
    50 7
    50 -7
    
    예상 출력
    0
    
  4. 예제 4

    입력
    3 1
    1 4
    1 -5
    1 2
    
    예상 출력
    45
    
  5. 예제 5

    입력
    6 10
    3 5
    3 -5
    3 5
    3 -5
    3 5
    3 -5
    
    예상 출력
    0