만드는 중입니다

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

X개의 부분으로 나누기

면접 대비

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

요약
길이 n인 배열을 연속한 X개의 비지 않은 구간으로 나누어, 각 구간의 합이 b_j 이상이 되게 하면서 초과분의 총합을 최소화합니다.
난이도

쉬움10점 중 3점

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

문제

파샤 아저씨가 전통적인 산책 중에 nn개의 숫자로 이루어진 배열을 주웠다. 집으로 가는 길에 좋은 친구 그리샤냐를 만났다. 그리샤냐에게는 원소가 XX개인 배열이 있었다. 두 친구는 커피를 마시러 가기로 하고, 주운 배열로 무엇을 할지도 생각하기로 했다.

그리샤냐는 파샤 아저씨의 배열을 연속한 원소들로 이루어진 비어 있지 않은 XX개의 부분으로 나누면 재미있겠다고 생각했다. 파샤 아저씨는 각 부분의 합이 같은 번호의 그리샤냐 배열 원소보다 크거나 같아야 한다고 말했다. 이 놀이가 너무 재미있어서, 두 친구는 파샤 아저씨 배열의 각 부분 합과 그리샤냐 배열의 대응하는 원소 사이의 차이를 계산하기로 했다. 이제 이 차이들의 합이 가능한 한 작아지도록 배열을 나누려 한다.

입력

첫 줄에 두 정수 nn, XX가 주어진다 (1≤n≤1051 \le n \le 10^5, 1≤X≤1001 \le X \le 100). 둘째 줄에는 파샤 아저씨 배열의 원소 nn개가 공백으로 구분되어 주어진다 (1≤ai≤1041 \le a_i \le 10^4). 셋째 줄에는 그리샤냐 배열의 원소 XX개가 공백으로 구분되어 주어진다 (1≤bi≤1091 \le b_i \le 10^9).

출력

첫 줄에 차이 합의 최솟값을 출력한다. 그러한 나눔이 존재하지 않으면 −1-1을 출력한다.

힌트

첫 번째 입력에서는 배열을 {1,2}\{1, 2\}와 {3}\{3\}로 나누는 것이 유리하다.

예제2

  1. 예제 1

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

    입력
    2 2
    1 101
    100 1
    
    예상 출력
    -1