만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

초콜릿 케이크

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

요약
2N개 조각으로 된 케이크에 조각마다 M 단위의 토핑을 올려, 모든 절단에서 두 부분의 맛 차이 중 최댓값을 최소화합니다.
난이도

보통10점 중 6점

유형
배열, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

2N2N개의 크기와 넓이가 같은 부채꼴 모양 조각으로 이루어진 원형 케이크가 있다. 각 조각은 시계 방향으로 11번부터 2N2N번까지 순서대로 번호가 붙어 있으며, 처음에 ii번 조각의 맛은 AiA_i이다.

채완이는 희원이와 케이크를 절반으로 잘라 나눠 먹으려고 한다. 케이크를 자를 때는 11 이상 NN 이하의 정수 kk를 하나 고른 뒤, 케이크를 kk, k+1k + 1, ⋯\cdots, k+N−1k + N - 1번 조각이 포함된 부분과 그렇지 않은 부분으로 나눈다. 나눠진 각 부분의 맛은 그 부분에 포함된 케이크 조각 맛의 합으로 정한다.

채완이는 더 맛있는 부분을 먹고 싶어 하므로, 케이크를 자르는 NN가지 방법 중 두 부분의 맛 차이가 최대가 되는 방법을 고른다.

희원이는 이 계략을 간파하고, 채완이가 케이크를 잘랐을 때 두 부분의 맛 차이가 최소가 되도록 케이크 조각 위에 초콜릿 토핑을 올려두려고 한다. 어떤 조각에 토핑을 하나 올리면 그 조각의 맛은 MM만큼 올라간다. 한 조각에 여러 개의 토핑을 올릴 수 있고, 여러 조각에 동시에 올릴 수도 있다. 다만 한 조각에 올릴 수 있는 초콜릿의 최대 개수는 101210^{12}개이다.

희원이가 케이크를 최대한 공평하게 나눠 먹을 수 있도록, 각 조각에 초콜릿 토핑을 올리는 방법을 구하라.

입력

첫째 줄에 두 정수 NN과 MM이 공백으로 구분되어 주어진다. (1≤N≤100 000(1 \le N \le 100\ 000; 1≤M≤106)1 \le M \le 10^6)

다음 줄에 정수 A1A_1, A2A_2, ⋯\cdots, A2N−1A_{2N-1}, A2NA_{2N}이 공백으로 구분되어 주어진다. (1≤Ai≤106)(1 \le A_i \le 10^6)

출력

첫째 줄에 가능한 맛 차이의 최솟값을 출력한다.

다음 줄에 2N2N개의 정수 C1C_1, C2C_2, ⋯\cdots, C2N−1C_{2N-1}, C2NC_{2N}을 공백으로 구분하여 출력한다. CiC_i는 ii번 조각에 올려놓을 초콜릿의 개수이며, 0≤Ci≤10120 \le C_i \le 10^{12}을 만족해야 한다. 주어진 범위 안에서 항상 맛 차이를 최소화할 수 있다.

최솟값을 달성하는 출력이 여러 가지라면 그중 아무거나 출력한다.

예제1

  1. 예제 1

    입력
    2 3
    1 2 3 4
    
    예상 출력
    2
    1 1 0 0