인생

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

요약
각 단계에서 A 또는 B를 고르면 이후 원소들이 U만큼 늘거나 D만큼 줄어들 때, 모든 접두사 길이 n에 대해 고른 값 합의 최솟값을 구한다.
난이도

보통10점 중 7점

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

문제

NN개의 정수로 이루어진 두 배열 AA, BB와 두 정수 UU, DD가 주어진다. 배열 AA, BB의 ii번째 원소는 각각 A_iA\_i, B_iB\_i이다.

f(n)f(n)을 다음과 같이 정의한다.

  • 아래 과정을 i=1,2,⋯ ,ni = 1, 2, \cdots, n에 대해 순서대로 수행한다.

    1. A_iA\_i와 B_iB\_i 중 하나를 고른다.
    2. 이후 i<j≤ni < j \le n을 만족하는 모든 jj에 대해, A_iA\_i를 골랐다면 A_jA\_j와 B_jB\_j의 값이 UU만큼 증가하고, B_iB\_i를 골랐다면 A_jA\_j와 B_jB\_j의 값이 DD만큼 감소한다.
  • f(n)f(n)은 수를 고르는 2n2^n가지 방법 중, 고른 수들의 합의 최솟값이다.

11 이상 NN 이하의 모든 정수 nn에 대해, f(n)f(n)의 값을 구해보자.

입력

첫째 줄에 배열의 길이 NN과 양의 정수 UU, DD가 공백으로 구분되어 주어진다. (1≤N≤300 000(1 \le N \le 300\ 000; 1≤U,D≤106)1 \le U, D \le 10^6)

둘째 줄에 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 공백으로 구분되어 주어진다. (0≤A_i≤106)(0 \le A\_i \le 10^6)

셋째 줄에 B_1,B_2,⋯ ,B_NB\_1, B\_2, \cdots, B\_N이 공백으로 구분되어 주어진다. (0≤B_i≤106)(0 \le B\_i \le 10^6)

출력

NN개의 줄에 걸쳐 답을 출력한다. nn번째 줄에는 f(n)f(n)을 출력한다.

예제1

  1. 예제 1

    입력
    5 2 3
    4 8 2 8 1
    11 5 14 8 19
    
    예상 출력
    4
    11
    9
    13
    7