실력과 열정

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

요약
매일 K 이상을 실력과 열정 사이에서 옮기며 N일 동안 A_i 곱하기 B_i의 합을 최대로 만드는 값을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법
정답자
아직 제출이 없습니다

문제

홍익대학교 컴퓨터공학과 승준이는 '알고리즘 분석' 수업을 수강한다.

교수님은 수업에서 실력과 열정을 가장 중요하게 보며, 수업이 진행되는 NN일 동안 매일 두 값의 곱을 점수에 더한다.

즉, ii일차의 실력과 열정을 각각 음이 아닌 정수로 수치화한 값을 A_iA\_i, B_iB\_i라 하면, 최종 점수는 아래와 같다.

A_1B_1+A_2B_2+⋯+A_NB_NA\_1B\_1+A\_2B\_2+\cdots+A\_NB\_N

초기 상태에서 승준이의 실력은 A_0A\_0, 열정은 B_0B\_0이다.

과도한 공부는 열정의 손실을 일으키고 과도한 열정은 자만을 불러 실력을 줄인다.

승준이는 매일 ii(i=1,…,Ni=1,\dots,N)일차 성적 갱신 전에 두 행동 중 하나를 선택해 현재 상태를 갱신해야 한다.

  1. xx만큼 공부한다 : 열정 수치에서 KK이상인 정수 xx를 선택해 실력으로 바꾼다.
    • A_i=A_i−1+x, B_i=B_i−1−x (K≤x≤B_i−1)A\_{i} = A\_{i-1} + x,\ B\_{i} = B\_{i-1} - x \ (K \le x \le B\_{i-1})
  2. xx만큼 쉰다 : 실력 수치에서 KK이상인 정수 xx를 선택해 열정으로 바꾼다.
    • A_i=A_i−1−x, B_i=B_i−1+x (K≤x≤A_i−1)A\_{i} = A\_{i-1} - x,\ B\_{i} = B\_{i-1} + x \ (K \le x \le A\_{i-1})

매일 KK이상의 열정을 실력으로 바꾸거나, KK이상의 실력을 열정으로 바꿔야한다는 뜻이다.

목표는 승준이가 매일 적당한 행동을 선택해 NN일 후의 최종 점수를 최대로 만드는 것이다.

NN일차 수업이 종료된 후에 승준이가 얻을 수 있는 최종 점수를 최대화해 보자.

입력

첫번째 줄에 NN이 주어진다. (1≤N≤5001 \le N \le 500)

두번째 줄에 승준이의 초기 실력 수치 A_0A\_0, 초기 열정 수치 B_0B\_0, 실력과 열정의 변환 가능한 최소 수치인 KK가 주어진다.

  • 2≤A_0+B_0≤5002 \le A\_0 + B\_0 \le 500
  • 0≤A_0,B_0≤5000 \le A\_0, B\_0 \le 500
  • 1≤K≤max⁡(A_0,B_0)1 \le K \le \max(A\_0, B\_0)

출력

NN일차 수업이 종료된 후 승준이가 얻을 수 있는 최종 점수의 최댓값을 출력한다.

예제2

  1. 예제 1

    입력
    79
    1 1 1
    
    예상 출력
    39
    
  2. 예제 2

    입력
    3
    52 31 11
    
    예상 출력
    5086