아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

초직사각형

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

요약
네 변수 중 하나에 값을 더하는 카드 N장이 있을 때, 정확히 K장을 골라 사용 순서를 정해 네 변수의 곱이 최대가 되도록 하는 카드 조합과 순서를 출력한다.
난이도

보통10점 중 6점

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

문제

1차원 공간의 선분, 2차원 공간의 직사각형, 3차원 공간의 직육면체를 생각해 보자.

선분의 크기는 변수 AA 하나로, 직사각형의 크기는 두 변수 AA와 BB로, 직육면체의 크기는 세 변수 AA, BB, CC로 나타낼 수 있다. 선분의 길이는 AA, 직사각형의 넓이는 A⋅BA \cdot B, 직육면체의 부피는 A⋅B⋅CA \cdot B \cdot C이다.


4차원 공간에 네 변수 AA, BB, CC, DD로 크기를 나타낼 수 있는 초직사각형이 있다. 4차원 초직사각형의 부피는 A⋅B⋅C⋅DA \cdot B \cdot C \cdot D이다.

처음에 변수 AA의 값은 A0A_0, 변수 BB의 값은 B0B_0, 변수 CC의 값은 C0C_0, 변수 DD의 값은 D0D_0이다.

이 초직사각형의 크기를 바꿀 수 있는 카드가 NN장 있다. ii (1≤i≤N1 \le i \le N)번째 카드에는 문자 TiT_i와 자연수 UiU_i가 적혀 있다. TiT_i는 A, B, C, D 중 하나이며, 값을 바꿀 변수의 이름을 뜻한다. ii번째 카드를 사용하면 TiT_i에 해당하는 변수의 값이 UiU_i만큼 증가한다. 사용한 카드는 즉시 사라지므로 각 카드는 최대 한 번만 사용할 수 있다.

4차원 초직사각형의 부피를 최대화하려고 한다. 이를 위해 주어진 카드 중 정확히 KK장을 골라 원하는 순서대로 사용할 수 있다. 어떤 카드를 어떤 순서로 사용해야 하는지 구해 출력하는 프로그램을 작성하라.

부피를 최대로 만드는 사용 방법이 여러 가지라면 그중 하나만 출력하면 된다.

입력

첫 번째 줄에 두 정수 NN과 KK가 공백 하나를 사이로 두고 주어진다.

두 번째 줄에 네 정수 A0A_0, B0B_0, C0C_0, D0D_0가 공백 하나씩을 사이로 두고 주어진다.

다음 NN개 줄에 카드 정보가 주어진다. ii (1≤i≤N1 \le i \le N)번째 줄에는 TiT_i와 UiU_i가 공백 하나를 사이로 두고 주어진다.

출력

KK개 줄에 선택한 카드를 사용할 순서대로 입력 형식과 같은 방식으로 한 줄에 한 카드씩 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤K≤N≤200 0001 \le K \le N \le 200\,000
  • 1≤A0,B0,C0,D0≤1 000 0001 \le A_0, B_0, C_0, D_0 \le 1\,000\,000
  • 모든 1≤i≤N1 \le i \le N에 대해 TiT_i는 A, B, C, D 중 하나이다.
  • 모든 1≤i≤N1 \le i \le N에 대해 UiU_i는 11 이상 1 000 0001\,000\,000 이하의 자연수이다.

예제2

  1. 예제 1

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

    입력
    8 6
    1 2 3 4
    A 2
    A 5
    B 7
    B 2
    C 5
    C 9
    D 1
    D 3
    
    예상 출력
    A 2
    B 7
    C 5
    A 5
    C 9
    D 3