나무 자르기

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

요약
모든 나무를 높이 0으로 자르는데, 이미 쓰러진 나무 중 가장 큰 번호를 i라 할 때 충전 비용이 b_i이다. a_i는 증가하고 b_i는 감소할 때 최소 총 충전 비용을 구한다.
난이도

보통10점 중 7점

유형
그리디, 정렬
정답자
아직 제출이 없습니다

문제

높이가 a1,a2,…,ana_1, a_2, \dots, a_n인 나무 nn그루를 전기톱으로 모두 베려고 한다.

ii번 나무에 전기톱을 한 번 쓸 때마다 그 나무의 높이가 1만큼 줄어든다. 전기톱은 한 번 쓸 때마다 다시 충전해야 하고, 충전 비용은 이미 높이가 0이 된 나무 가운데 번호가 가장 큰 나무가 무엇인지에 따라 정해진다. 그 번호가 ii이면 한 번 충전하는 비용은 bib_i이다. 높이가 0이 된 나무가 하나도 없으면 전기톱을 충전할 수 없다. 맨 처음에 전기톱은 충전되어 있다.

나무의 높이 aia_i와 각 나무에 대한 충전 비용 bib_i가 주어질 때, 모든 나무의 높이를 0으로 만드는 데 드는 충전 비용의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 nn (1≤n≤100 0001 \le n \le 100\,000)이 주어진다. 둘째 줄에 a1,a2,…,ana_1, a_2, \dots, a_n이, 셋째 줄에 b1,b2,…,bnb_1, b_2, \dots, b_n이 주어진다. (1≤ai≤1091 \le a_i \le 10^9, 0≤bi≤1090 \le b_i \le 10^9)

a1=1a_1 = 1이고 bn=0b_n = 0이며, a1<a2<⋯<ana_1 < a_2 < \dots < a_n과 b1>b2>⋯>bnb_1 > b_2 > \dots > b_n을 만족한다.

출력

모든 나무를 베는 데 드는 충전 비용의 최솟값을 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 2 3 4 5
    5 4 3 2 0
    
    예상 출력
    25
    
  2. 예제 2

    입력
    6
    1 2 3 10 20 30
    6 5 4 3 2 0
    
    예상 출력
    138