아이스크림 배낭

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

요약
정확히 K개의 아이스크림을 골라 그중 가장 큰 칼로리를 최소로 만들고, 그러한 선택이 여럿이면 행복의 합이 최대가 되도록 골라 두 값을 출력한다.
난이도

보통10점 중 6점

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

문제

N개의 아이스크림을 파는 멋진 아이스크림 가게가 있다. 각 아이스크림은 칼로리 수를 나타내는 CiC_i와 행복도를 나타내는 HiH_i 두 수로 표현된다.

정확히 K개의 아이스크림을 사려고 하는데, 이때 가장 칼로리가 높은 아이스크림의 칼로리가 가능한 한 작아야 한다. 그런 방법이 여러 가지라면, 살 아이스크림의 총 행복도, 즉 고른 아이스크림들의 행복도 합을 최대화하려고 한다.

입력

첫째 줄에 테스트 케이스의 수를 나타내는 정수 T가 주어진다.

각 테스트 케이스는 두 정수 N과 K(1 ≤ K ≤ N ≤ 10^5)가 있는 줄로 시작한다. N은 가게에 있는 아이스크림의 수, K는 사려고 하는 아이스크림의 수다.

다음 줄에는 N개의 정수 C1,⋯ ,CNC_1, \cdots, C_N(0 ≤ CiC_i ≤ 10^9)이 주어진다. CiC_i는 i번째 아이스크림의 칼로리 수다. 그다음 줄에는 N개의 정수 H1,⋯ ,HNH_1, \cdots, H_N(0 ≤ HiH_i ≤ 10^9)이 주어진다. HiH_i는 i번째 아이스크림의 행복도다.

출력

각 테스트 케이스마다, 살 아이스크림 중 가장 칼로리가 높은 아이스크림의 칼로리와 살 아이스크림의 총 행복도를 공백으로 구분해 한 줄에 출력한다.

목표는 정확히 K개의 아이스크림을 사면서 가장 칼로리가 높은 아이스크림의 칼로리를 가능한 한 작게 만드는 것이다. 그런 방법이 여러 가지라면, 살 아이스크림의 총 행복도를 최대화하려고 한다.

예제1

  1. 예제 1

    입력
    1
    5 3
    1 2 3 4 5
    5 4 3 2 1
    
    예상 출력
    3 12