시간 제한
1.000 S
메모리 제한
512 MB
제출 수
1
정답 수
1
정답률
100.000%
문제 설명

Algorithm Wiki에는 문제마다 해당 문제의 명예의 전당이 존재 한다. 이 시스템을 간소화 해 구현해 보도록 하자.

정답 판정을 받은 제출에 대해 우리는 다음의 정보를 얻을 수 있다.

  • 제출 번호
    • i번째 제출은 제출 번호 i를 갖는다.
    • 맨 처음 제출의 제출 번호는 1이다.
  • 유저 아이디
    • 길이 1 이상 10 이하의 문자열로, 알파벳 소문자로만 구성된다.
  • 실행 시간
    • 1 이상 1,000 이하의 정수이다.
  • 사용 메모리
    • 1 이상 1,000 이하의 정수이다.
  • 사용 언어
    • 1 이상 4 이하의 정수로 표현된다.
    • 출력에선 다음을 따라 치환하여 표현해야 한다.
      1. C
      2. C++
      3. Java
      4. Python
  • 코드 길이
    • 1 이상 1,000 이하의 정수이다.
  • 제출한 시간
    • YYYY-MM-DD hh:mm:ss 의 형식으로 주어진다.
      • 2024YYYY2025
      • 01MM12
      • 01DD30
      • 00hh23
      • 00mm59
      • 00ss59
    • 모든 제출 번호의 상대적 우선순위와 같은 우선순위가 보장되며, 중복되지 않는다.

명예의 전당은 '속도', '메모리', '숏코딩', '선발대'로 4개의 부문으로 구성된다. 우선 공통으로 적용되는 기준을 보자.

  1. 부문 당 1,2,3위가 존재한다.
  2. 한 사람은 서로 다른 부문에 등재될 수 있다.
  3. 한 사람은 한 부문의 1,2,3위 중 한 곳에만 등재될 수 있다.
    • 한 사람이 여러번 제출한 경우, 당연히 부문에 따라 그 중에서 가장 좋은 결과를 가지고 판단한다.

이어서 각 부문별로 등재 기준을 보자.

  • 속도
    1. 실행 시간이 작은 순
    2. 실행 시간이 같다면 제출 번호가 작은 순
  • 메모리
    1. 사용 메모리가 작은 순
    2. 사용 메모리가 같다면 제출 번호가 작은 순
  • 숏코딩
    1. 코드 길이가 짧은 순
    2. 코드 길이가 같다면 제출 번호가 작은 순
  • 선발대
    1. 제출 번호가 작은 순

마지막으로 각 부문별 표기 정보를 보자.

  • 속도
    • 유저 아이디 / 실행 시간 / 사용 언어
  • 메모리
    • 유저 아이디 / 사용 메모리 / 사용 언어
  • 숏코딩
    • 유저 아이디 / 코드 길이 / 사용 언어
  • 선발대
    • 유저 아이디 / 제출한 시간 / 사용 언어
위를 토대로 n개의 제출 기록이 주어질 때, 각 제출 기록에 따라 변화하는 명예의 전당의 모습을 출력하는 프로그램을 작성하자.

편의 상 모든 제출은 동일한 문제에 대한 제출이라고 가정하며, 채점 결과 역시 모두 정답 판정을 받았다고 생각하면 된다.

입력 설명

첫째 줄에 제출 기록의 수를 의미하는 정수 n이 주어진다. (1n100)

두번째 줄부터 n개의 줄에 걸쳐 i번째 제출의 정보가 공백으로 구분되어 주어진다. 주어지는 순서 및 제한은 본문에 나열한 순서와 동일하다.

출력 설명

1,2,...,n번 제출 기록이 주어졌을 때의 명예의 전당의 모습을 첫째 줄부터 총 n×5개의 줄에 걸쳐 차례대로 출력한다.

각 출력은 다음을 따른다.

  • 첫 번째 행 : 속도 부문에 등재된 1,2,3위의 표기 정보를 공백으로 구분하여 출력한다.
  • 두 번째 행 : 메모리 부문에 등재된 1,2,3위의 표기 정보를 공백으로 구분하여 출력한다.
  • 세 번째 행 : 숏코딩 부문에 등재된 1,2,3위의 표기 정보를 공백으로 구분하여 출력한다.
  • 네 번째 행 : 선발대 부문에 등재된 1,2,3위의 표기 정보를 공백으로 구분하여 출력한다.
  • 다섯 번째 행 : 개행 문자를 출력한다.

각 행에서의 표기 정보는 '{', '}'로 감싸주어야 하며, 만약 1위만 있거나 1,2위만 있는 경우 그들의 정보만 출력해야 한다.

자세한 형식은 예제를 참고하자.

예시 1
입력
4
hun 100 500 4 317 2024-04-09 13:22:22
pill 80 300 1 520 2024-04-09 13:23:22
kiwi 80 299 2 555 2024-04-09 14:00:00
hun 75 800 4 415 2024-04-10 17:13:50
출력
{hun/100/Python}
{hun/500/Python}
{hun/317/Python}
{hun/2024-04-09 13:22:22/Python}

{pill/80/C}, {hun/100/Python}
{pill/300/C}, {hun/500/Python}
{hun/317/Python}, {pill/520/C}
{hun/2024-04-09 13:22:22/Python}, {pill/2024-04-09 13:23:22/C}

{pill/80/C}, {kiwi/80/C++}, {hun/100/Python}
{kiwi/299/C++}, {pill/300/C}, {hun/500/Python}
{hun/317/Python}, {pill/520/C}, {kiwi/555/C++}
{hun/2024-04-09 13:22:22/Python}, {pill/2024-04-09 13:23:22/C}, {kiwi/2024-04-09 14:00:00/C++}

{hun/75/Python}, {pill/80/C}, {kiwi/80/C++}
{kiwi/299/C++}, {pill/300/C}, {hun/500/Python}
{hun/317/Python}, {pill/520/C}, {kiwi/555/C++}
{hun/2024-04-09 13:22:22/Python}, {pill/2024-04-09 13:23:22/C}, {kiwi/2024-04-09 14:00:00/C++}

예시 2
입력
3
kiwi 5 512 2 661 2024-04-09 14:00:00
kiwi 4 622 2 412 2024-05-13 22:10:23
kiwi 3 456 2 568 2025-01-01 00:00:01
출력
{kiwi/5/C++}
{kiwi/512/C++}
{kiwi/661/C++}
{kiwi/2024-04-09 14:00:00/C++}

{kiwi/4/C++}
{kiwi/512/C++}
{kiwi/412/C++}
{kiwi/2024-04-09 14:00:00/C++}

{kiwi/3/C++}
{kiwi/456/C++}
{kiwi/412/C++}
{kiwi/2024-04-09 14:00:00/C++}

예시 3
입력
4
pill 100 399 2 800 2024-04-12 11:00:00
hun 150 500 4 600 2024-04-22 12:30:00
pill 80 222 3 300 2024-05-02 14:00:00
hun 180 812 4 1 2024-05-12 15:30:00
출력
{pill/100/C++}
{pill/399/C++}
{pill/800/C++}
{pill/2024-04-12 11:00:00/C++}

{pill/100/C++}, {hun/150/Python}
{pill/399/C++}, {hun/500/Python}
{hun/600/Python}, {pill/800/C++}
{pill/2024-04-12 11:00:00/C++}, {hun/2024-04-22 12:30:00/Python}

{pill/80/Java}, {hun/150/Python}
{pill/222/Java}, {hun/500/Python}
{pill/300/Java}, {hun/600/Python}
{pill/2024-04-12 11:00:00/C++}, {hun/2024-04-22 12:30:00/Python}

{pill/80/Java}, {hun/150/Python}
{pill/222/Java}, {hun/500/Python}
{hun/1/Python}, {pill/300/Java}
{pill/2024-04-12 11:00:00/C++}, {hun/2024-04-22 12:30:00/Python}

기여
만든 사람 : pill27211
검수한 사람 : algokiwi