만드는 중입니다

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

세 번째 그룹 시험

면접 대비

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

요약
각 블록의 이론 점수 x_i와 실습 점수 y_i가 주어질 때, 이론을 최소 a개, 실습을 최소 b개 고르면서 총점을 최대로 만드는 방법을 구합니다.
난이도

보통10점 중 5점

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

문제

한 교사가 시험의 새로운 형식을 고안했다. 시험은 nn개의 블록으로 구성되며, 각 블록은 하나의 주제에 해당한다. 모든 ii (1부터 nn까지)에 대해 학생은 ii번째 블록에서 성적 cic_i를 받는다. 모든 성적은 서로 독립이며, 각 성적은 0 이상 100 이하의 정수다.

각 블록에서 학생은 성적을 얻는 방법을 하나 고른다. 이론 문제에 답하거나 실습 문제를 푸는 것이다. 시험에 성공적으로 합격하려면 이론 문제에 답하여 채점된 블록이 최소 aa개여야 하고, 실습 문제를 풀어 채점된 블록이 최소 bb개여야 한다. 합격하면 최종 성적 CC는 모든 블록 성적의 합이다. C=∑i=1nciC = \sum_{i=1}^n c_i.

일리야가 곧 이 시험을 본다. 블록 ii에서 이론 문제에 답하면 xix_i점을, 실습 문제를 풀면 yiy_i점을 받는다. 시험 총점이 최대가 되도록 이론으로 답할 블록(최소 aa개)과 실습으로 풀 블록(최소 bb개)을 정하는 방법을 찾아라.

입력

첫 번째 줄에 세 정수 nn, aa, bb가 주어진다. nn은 주제의 총 개수, aa는 이론으로 합격해야 하는 블록의 최소 개수, bb는 실습으로 합격해야 하는 블록의 최소 개수다 (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5; 0≤a,b≤n0 \le a, b \le n). a+b≤na + b \le n이 보장된다.

두 번째 줄에는 이론 문제에 답했을 때 받는 성적 xix_i가 nn개 주어진다 (0≤xi≤1000 \le x_i \le 100).

세 번째 줄에는 실습 문제를 풀었을 때 받는 성적 yiy_i가 nn개 주어진다 (0≤yi≤1000 \le y_i \le 100).

출력

첫 번째 줄에는 일리야가 받을 수 있는 최대 총 성적 CC를 하나의 정수로 출력한다.

두 번째 줄에는 공백으로 구분된 nn개의 문자를 출력한다. ii번째 문자는 블록 ii에서 이론 문제에 답해야 하면 T, 실습 문제를 풀어야 하면 P다. T는 최소 aa개, P는 최소 bb개 포함되어야 한다.

예제3

  1. 예제 1

    입력
    4 1 1
    10 30 50 70
    80 60 40 20
    
    예상 출력
    260
    P P T T
    
  2. 예제 2

    입력
    4 1 1
    30 40 60 90
    10 25 50 85
    
    예상 출력
    215
    T T T P
    
  3. 예제 3

    입력
    4 2 1
    0 17 70 13
    2 21 55 99
    
    예상 출력
    190
    T P T P