투표용지 분석기
면접 대비시간 제한2초메모리 제한256 MB
표마다 표시가 정확히 하나인 유효표만 후보별로 세어 득표순으로 정렬하고 무효표 비율과 함께 출력합니다.
문제
플랫랜드 선거관리위원회가 대통령 선거를 준비한다. 개표 과정에서 사람이 저지르는 실수를 줄이려고 자동 투표용지 분석기를 개발했다.
후보는 명이다. 투표용지에는 후보마다 네모 칸이 하나씩 있고, 투표자는 정확히 한 칸에만 표시해야 한다. 표시한 칸이 없거나 두 칸 이상이면 그 용지는 무효다. 투표자가 용지를 분석기의 스캐너에 넣으면 스캐너가 표시를 읽어 길이 인 투표 문자열을 만든다. 표시한 칸은 X, 표시하지 않은 칸은 .이다.
모든 투표용지의 투표 문자열이 주어질 때 개표 보고서를 출력하는 프로그램을 작성하시오. 후보는 득표수가 많은 순서로 나열한다. 득표수가 같은 후보끼리는 투표용지에 적힌 순서를 그대로 따른다. 전체 용지 장 중 표를 얻은 후보의 득표율은 퍼센트다. 보고서의 마지막 줄에는 무효표의 비율을 적는다.
입력
첫째 줄에 후보의 수 과 투표용지의 수 이 주어진다. (, )
다음 개 줄에는 후보의 성이 한 줄에 하나씩 주어진다. 각 성은 길이가 100 이하인 영문자 문자열이다. 성이 Invalid인 후보는 없다.
그다음 개 줄에는 투표 문자열이 한 줄에 하나씩 주어진다. 각 문자열은 X 또는 . 문자 개로 이루어진다.
출력
개 줄을 출력한다. 앞의 개 줄에는 득표수가 많은 순서대로 후보의 성, 공백, 득표율, 퍼센트 기호 %를 차례로 출력한다. 마지막 줄에는 단어 Invalid, 공백, 무효표의 비율, 퍼센트 기호를 차례로 출력한다.
모든 수는 소수점 아래 둘째 자리까지 반올림한다. 값이 두 수의 정확히 가운데에 놓이면 더 큰 쪽을 출력한다. 예를 들어 12.345는 12.35로 출력한다.