각 선수의 가중 점수 중 상위 M개만 합산해 순위를 매기고 동점은 이름순으로 나열합니다.
쉬움3정렬해시맵시뮬레이션면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB세계에는 뛰어난 선수가 많다. 서로 다른 선수가 서로 다른 대회에서 우승하면 누가 가장 강한지 가리기 어렵다. 다음은 선수의 순위를 매기는 한 가지 방법이다.
등수별 점수, 각 대회의 가중치, 대회 결과가 주어진다. 입력에 등장하는 모든 선수의 순위를 매겨라.
첫 줄에 테스트 케이스의 개수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어지며, 각 테스트 케이스는 다음과 같이 이루어진다.
각 테스트 케이스마다 먼저 Case #x:를 한 줄에 출력한다. x는 1부터 시작하는 테스트 케이스 번호다. 그다음 입력에 등장한 모든 선수를 한 줄에 한 명씩 r: name 형식으로 출력한다. r은 그 선수의 순위, name은 이름이다.
선수의 순위는 자신보다 합계 점수가 높은 선수의 수에 1을 더한 값이다. 따라서 합계 점수가 같은 선수는 같은 순위를 받고, 그다음 순위는 같은 순위를 받은 인원수만큼 건너뛴다. 순위가 높은 선수부터 출력하고, 순위가 같으면 이름의 사전순으로 출력한다. 테스트 케이스 사이에 빈 줄을 넣지 않는다.
A부터 Z까지의 문자로만 이루어지고, 길이는 10 이하다.첫 번째 예제에서 BOLT는 두 대회에서 합계 7000점을 얻어 1위다. GAY는 네 대회의 점수를 모두 더하면 8500점이지만 상위 두 개만 세므로 6500점이 되어 2위다. PEIMENG과 TIANBING은 둘 다 1500점이라 공동 3위이고, 이름의 사전순으로 나열한다. 공동 3위가 두 명이므로 그다음 순위는 4위가 아니라 5위이고, 1000점을 얻은 LARRY가 5위다.