그룹에 대한 연구

면접 대비

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

요약
개수 차이가 1 이하인 M개의 묶음으로 N개의 정수를 나눌 때 묶음 최솟값의 합이 최소가 되는 값과 최대가 되는 값을 구합니다.
난이도

보통10점 중 4점

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

문제

N개의 정수가 담긴 주머니가 있고, 이 정수들을 M개의 서로 다른 그룹에 넣으려고 한다. 정수를 분배할 때 각 정수는 정확히 하나의 그룹에 속해야 하며, 서로 다른 두 그룹의 크기 차이는 1 이하여야 한다.

그룹의 비용은 그 그룹에 있는 가장 작은 정수와 같고, M개 그룹의 총 비용은 각 그룹의 비용의 합과 같다. 빈 그룹의 비용은 0이다.

이 문제에서 해야 할 일은 주어진 N개의 정수(중복될 수 있다)를 M개의 서로 다른 그룹에 넣어 그룹의 총 비용을 최소로 만드는 방법을 찾는 것이다. 또한 총 비용을 최대로 만드는 방법도 찾아야 한다. 총 비용만 출력한다.

입력

입력의 첫 줄에는 두 정수 N M (1 ≤ N, M ≤ 100000)이 주어지며, 이는 각각 주어진 정수의 개수와 만들어야 하는 그룹의 개수이다. 다음 줄에는 N개의 정수 Ai (0 ≤ Ai ≤ 1000000)가 주어진다.

출력

한 줄에 두 정수를 공백 하나로 구분하여 출력한다. 첫 번째는 최소 총 비용, 두 번째는 최대 총 비용이다.

예제3

  1. 예제 1

    입력
    7 3
    4 2 7 1 3 5 6
    
    예상 출력
    6 11
    
  2. 예제 2

    입력
    5 1
    10 15 17 4 8
    
    예상 출력
    4 4
    
  3. 예제 3

    입력
    3 2
    470 105 222
    
    예상 출력
    327 575