이상적인 대회
시간 제한1초메모리 제한128 MB
ASCII로 된 대회 순위표를 파싱해서 vainness, oversimplification, evenness, unsolvability, 문제별 instability 같은 가중 페널티들을 계산하고 최종 negidealness 값을 구하는 문제입니다.
문제
지역 및 하위 지역 프로그래밍 대회 자체의 순위를 매기는 상위 대회는 없습니다. 대회 전체를 서로 비교하기가 어렵기 때문입니다. 여기 한 가지 방법이 있습니다. 어떤 대회의 결과표가 "이상적인" 대회에서 얼마나 벗어났는지를 비이상도(negidealness) 라는 값으로 측정합니다. 이는 아래 벌점들의 가중합입니다. 이하에서 는 참가 팀 수, 는 문제 수를 나타냅니다.
헛됨 . 모든 팀은 적어도 한 문제를 풀어야 합니다. 한 문제도 풀지 못한 팀마다 을 더합니다.
지나친 쉬움 . 모든 문제를 다 푼 팀이 있어서는 안 됩니다. 개 문제를 모두 푼 팀마다 을 더합니다.
고름 . 푼 문제 수는 순위를 따라 내려가면서 완만하게 줄어들어야 합니다. 팀은 순위 순서로 나열되어 있습니다. 순위상 인접한 두 팀의 푼 문제 수 차이가 이면 을 더합니다. 즉 두 팀 사이에서 건너뛴 "푼 문제 수" 값 하나마다 입니다. 예를 들어 한 팀이 5문제를 풀고 다음 팀이 1문제를 풀었다면 2, 3, 4가 건너뛰어졌으므로 을 더합니다.
풀 수 없음 . 모든 문제는 적어도 한 팀이 풀어야 합니다. 아무 팀도 풀지 못한 문제마다 을 더합니다.
불안정 . 어떤 팀이 문제 를 풀었다면, 그보다 위에 있는 모든 팀도 를 풀어야 합니다. 문제 에 대해 를 푼 팀 중 가장 순위가 낮은 팀을 잡습니다. 그 팀보다 순위가 엄격하게 위인(순위 번호가 더 작은) 팀 중 를 풀지 못한 팀마다 에 을 더합니다. 아무 팀도 를 풀지 못했다면 입니다.
전체 비이상도는 다음과 같습니다.
주어진 결과표에 대해 모든 벌점과 전체 비이상도를 계산하는 프로그램을 작성하세요.
입력
입력은 순수 ASCII로 된 대회 결과표입니다. 공백 문자는 스페이스뿐이며, 열은 최소 한 칸의 공백으로 구분됩니다.
- 표는 0줄 이상의 임의의 머리글 줄로 시작하고, 이어서 열 제목 줄, 그다음 하이픈(
-)만으로 이루어진 구분선이 옵니다. - 열 제목 줄에는
Team, 이어서 문제 글자들(대문자A,B, … 를 알파벳 순서로), 그리고=,Time,R이 있습니다. - 구분선 다음의 각 줄은 한 팀을 순위 순서로 나타냅니다. 한 줄에는 팀 이름(공백을 포함할 수 있음), 이어서 문제마다 하나씩의 칸, 그리고 세 정수 — 그 팀이 푼 문제 수, 벌점 시간, 순위
R— 가 있습니다. - 문제 칸은 그 팀이 문제를 풀었으면
+또는+k(는 정답 이전의 오답 횟수), 오답만 냈으면-k, 시도하지 않았으면.입니다. 칸이+로 시작할 때에 한해 그 팀이 문제를 푼 것으로 봅니다. - 순위 번호는 같을 수 있습니다(동점). 한 팀이 다른 팀보다 위에 있다는 것은 순위 번호가 엄격하게 더 작을 때에만 성립합니다.
문제는 최대 26개, 팀은 최대 300개입니다.
출력
다음을 각각 한 줄씩 출력합니다.
Vainness =다음에 ,Oversimplification =다음에 ,Evenness =다음에 ,Unsolvability =다음에 ,Instability p =다음에 (),Negidealness =다음에 .
모든 값은 소수점 아래 정확히 세 자리로 반올림하여 출력합니다. 어떤 값도 반올림 경계에 놓이지 않도록 테스트 데이터가 구성되어 있으므로, 세 자리로 올바르게 반올림하면 모두 동일한 문자열이 나옵니다.