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

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

블록 쌓기

면접 대비

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

요약
두 블록 건물을 중앙 높이가 h인 V자 모양으로 만들 때 쌓고 제거하는 블록 수의 합을 최소화합니다.
난이도

보통10점 중 5점

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

문제

윤형이와 동혁이가 블록 쌓기 놀이를 한다. 두 사람 모두 너비가 NN인 블록 건물을 하나씩 쌓았다. 윤형이의 건물은 kk번째 열에 블록이 YkY_k개 있고, 동혁이의 건물은 kk번째 열에 블록이 DkD_k개 있다. 두 사람은 블록을 쌓거나 빼서 똑같이 생긴 건물 두 개를 만들려고 한다.

새로 만들 건물은 위 그림의 오른쪽처럼 팩맨 모양이어야 한다. 왼쪽에서 오른쪽으로 갈수록 블록 개수가 줄어들다가 다시 늘어나야 하고, 이웃한 두 열의 블록 개수는 정확히 1만큼 차이나야 하며, 블록이 가장 적은 열은 정중앙이어야 한다. NN이 홀수이므로 정중앙 열의 번호를 c=N+12c = \frac{N+1}{2}라 하면, 완성된 건물의 kk번째 열에는 어떤 정수 h≥0h \ge 0에 대해 블록이 h+∣k−c∣h + |k - c|개 있다.

방을 어지르지 않으려고, 뺀 블록은 곧바로 블록 상자에 넣는다. 블록을 다른 자리로 옮기려면 상자에 넣었다가 다시 꺼내서 쌓아야 한다. 상자에는 블록이 무한히 많다.

블록 한 개를 쌓는 것과 한 개를 빼는 것을 각각 한 번의 작업으로 센다. 두 건물을 모두 위 모양으로 바꿀 때, 작업 횟수의 합을 최소로 하는 프로그램을 작성하여라.

입력

첫째 줄에 두 건물의 너비 NN이 주어진다. NN은 홀수이다.

둘째 줄에 윤형이의 건물의 각 열 높이 Y1,Y2,…,YNY_1, Y_2, \dots, Y_N이 공백으로 구분되어 주어진다.

셋째 줄에 동혁이의 건물의 각 열 높이 D1,D2,…,DND_1, D_2, \dots, D_N이 공백으로 구분되어 주어진다.

출력

블록을 쌓거나 빼는 작업 횟수의 최솟값을 출력한다.

제한

  • 1≤N≤300,0001 \le N \le 300{,}000
  • 0≤Yk,Dk≤10120 \le Y_k, D_k \le 10^{12}

힌트

첫 번째 예제에서는 윤형이의 건물 1번째 열에 블록 2개를 쌓고, 동혁이의 건물 3번째 열에 블록 1개를 쌓으면 된다.

예제2

  1. 예제 1

    입력
    3
    1 2 3
    3 2 2
    
    예상 출력
    3
    
  2. 예제 2

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