점수 관리
시간 제한1초메모리 제한1024 MB
점수가 높은 순으로 순위를 매기고 동점자는 같은 순위를 줍니다. 숨김이 아닌 참가자를 순위순, 동순위는 이름 사전순으로 출력합니다.
문제
민겸이는 2023 INPC 참가자들의 점수를 관리하는 업무를 맡고 있다. 대회가 끝나면 순위표를 공개하려고 하는데, 이 순위표를 만드는 프로그램을 작성하자. 참가자마다 이름, 점수, 비공개 여부 세 가지 값이 있다.
- 2023 INPC의 참가자는 명이다.
- 각 참가자는 이름, 점수, 비공개 여부를 가진다.
- 이름은 영어 소문자로 이루어진 길이 1 이상 10 이하의 문자열이다.
- 점수는 1 이상 이하의 정수이다.
- 비공개 여부는 참 또는 거짓이며, 순위표에서 그 참가자를 숨길지 정한다.
- 두 참가자의 점수가 다르면 점수가 높은 참가자에게 더 높은 순위를 매긴다. 가장 높은 순위는 1등이고, 가장 낮은 순위는 등이다.
- 동점자가 있으면 모두에게 가능한 가장 높은 순위를 매긴다. 예를 들어 여섯 명의 점수가 10, 10, 8, 6, 6, 6이면 순위는 1, 1, 3, 4, 4, 4가 된다.
- 순위표에는 비공개를 선택하지 않은 참가자만 순위가 높은 순서대로 보여준다. 각 참가자는 순위, 이름, 점수 순으로 나타낸다. 순위가 같으면 이름이 사전순으로 앞서는 참가자를 먼저 보여준다. 비공개를 선택한 참가자는 순위표에 나타나면 안 된다. 비공개 여부는 실제 순위에 영향을 주지 않는다.
입력
첫 번째 줄에 참가자의 수 이 주어진다. 두 번째 줄부터 개의 줄에 걸쳐 한 줄에 참가자 한 명의 정보가 주어진다. 참가자 정보는 {"name":"이름","score":점수,"isHidden":비공개 여부} 형식으로 공백 없이 주어진다. 비공개 여부는 참이면 1, 거짓이면 0이다.
첫 번째 참가자 정보 바로 앞에는 여는 대괄호가 하나 있고, 마지막 참가자 정보 바로 뒤에는 닫는 대괄호가 하나 있다. 각 참가자 정보 사이에는 줄이 끝날 때마다 쉼표가 하나씩 있다.
출력
올바른 순위표를 출력한다. 각 줄에는 한 참가자의 순위, 이름, 점수를 공백으로 구분하여 출력한다. 순위가 높은 참가자부터 출력하고, 순위가 같으면 이름이 사전순으로 앞서는 참가자를 먼저 출력한다. 비공개 여부가 참인 참가자는 출력하지 않는다.
제한
- 모든 참가자의 이름은 서로 다르다.
- 점수를 공개하는 참가자가 적어도 한 명 있다.