SMS 여론조사 집계

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

TV 프로그램 "90%"는 매주 생방송으로 SMS 여론조사를 진행한다. 한 번의 조사는 질문 하나와 1번부터 kk번까지 번호를 붙인 선택지 kk개로 이루어진다. 시청자는 프로그램 전화번호로 1 이상 kk 이하의 번호를 SMS로 보내 투표하고, 집계 결과는 방송 중에 바로 공개된다.

의회는 지난주 방송에서 발표된 통계를 의심해 조사 위원회를 꾸렸다. 위원회는 마지막 방송에 도착한 SMS 전체 목록을 확보했고, 이 자료를 분석하려 한다. 조사 대상인 여론조사의 선택지는 네 개다.

SMS가 워낙 많아서, 위원회는 원본 자료에서 집계 결과를 뽑아내는 프로그램을 요청했다. 자료는 phone:content 쌍의 목록으로 주어진다. phone은 보낸 사람의 전화번호이고, content는 SMS 내용이다. 선택지별 득표율을 계산하라. 자료를 처리할 때 다음 규칙을 지켜야 한다.

  • 전화번호의 가장 일반적인 형태는 "A B C"이고, A는 국가 번호, B는 지역 번호, C는 시내 번호다. +98 (21) 6616-6645에서 국가 번호는 98, 지역 번호는 21, 시내 번호는 6616-6645다. A, B, C는 모두 숫자 0으로 시작하지 않는다.
  • 국가 번호는 생략할 수 있고, 적을 때는 항상 앞에 + 기호가 붙는다. 국가 번호가 없으면 98로 본다. 국가 번호는 최대 3자리다.
  • 국가 번호를 적었다면 지역 번호도 반드시 적어야 한다. 국가 번호를 생략했다면 지역 번호는 생략할 수 있다. 다만 지역 번호를 적을 때는 앞에 숫자 0을 붙이거나 지역 번호를 괄호로 감싸야 한다. 02166166600(21)66166600이 그런 예다. 지역 번호가 없으면 21로 본다. 지역 번호는 최대 3자리다.
  • 시내 번호는 3자리부터 8자리까지 길이가 다양하다. 661666166600이 그 예다.
  • 같은 번호가 여러 형식으로 기록되어 있을 수 있다. 09128122190, +98(912)812-2190, 0912-812-2190은 모두 같은 번호다. 형식 규칙은 다음과 같다.
    • 지역 번호는 괄호로 감쌀 수 있다.
    • 시내 번호의 두 숫자 사이, 또는 국가 번호와 지역 번호와 시내 번호 세 부분 중 두 부분 사이에 붙임표(-)가 들어갈 수 있다. 붙임표와 괄호는 서로 붙어 나오지 않는다.
  • 원본 자료의 전화번호는 모두 위 규칙을 정확히 지키는 올바른 번호다.
  • 번호의 완전한 형태는 생략된 국가 번호와 지역 번호를 채운 다음, 세 부분의 숫자를 이어 붙인 것이다. +98 (21) 6616의 완전한 형태는 98216616이다. 완전한 형태가 같은 두 SMS는 같은 사람이 보낸 것이다.
  • 전 세계의 어떤 전화번호든 완전한 형태는 하나로 정해진다. 예를 들어 (218)4460(21)84460은 완전한 형태가 둘 다 982184460이므로, 서로 다른 번호로 동시에 존재하지 않는다.
  • SMS 내용으로 올바른 것은 1부터 4까지의 숫자 한 글자뿐이다. 문자나 + 기호가 섞인 내용은 잘못된 것이므로 그 SMS는 버린다.
  • 한 번호에서 SMS를 여러 번 보냈을 수 있다. 이때는 올바른 SMS 중 가장 먼저 온 것만 인정하고 나머지는 버린다.
  • 버린 SMS는 득표수와 득표율 계산에 넣지 않는다.

입력

입력에는 테스트 케이스가 여러 개 들어 있다. 각 테스트 케이스의 첫 줄에는 목록에 있는 SMS의 개수 nn (1n100001 \le n \le 10000)이 주어진다. 이어지는 nn개의 줄에는 각각 a:b 꼴의 쌍이 주어진다. aa는 전화번호이고, bb는 SMS 내용이다. 전화번호에는 :가 들어가지 않으므로, 한 줄에서 처음 나오는 : 앞이 전화번호이고 그 뒤 전체가 SMS 내용이다. SMS 내용은 최대 30자이고, 각 문자는 영문자나 숫자, 또는 :, +, -, (, ) 중 하나다. 입력의 마지막 줄에는 0만 주어지며 이 줄은 처리하지 않는다. 입력에는 공백 문자가 없다.

출력

각 테스트 케이스마다 다섯 줄을 출력한다.

처음 네 줄 중 ii번째 줄에는 ii번 선택지의 득표율을 정수로 버린 값 뒤에 %를 붙여 출력한다. ii번 선택지의 득표수를 cic_i, 인정된 전체 득표수를 TT라 하면 출력할 값은 100ci/T\lfloor 100 c_i / T \rfloor다. T=0T = 0이면 네 줄 모두 0%를 출력한다.

다섯째 줄에는 참가자 수 xxParticipants:x 꼴로 출력한다. xx는 목록에 등장한 서로 다른 전화번호의 개수이며, 올바른 SMS를 하나도 보내지 않은 번호도 센다.