로비

시간 제한1초메모리 제한128 MB

요약
투표일 전 1000일 안에 들어온 기부금을 의원별로 합산하고, 반대표는 1/(1+D/10000)로 가중해 양측 표를 모두 더한다.
난이도

쉬움10점 중 3점

유형
구현, 수학, 시뮬레이션, 배열
정답자
아직 제출이 없습니다

문제

대규모 입법에는 흔히 막대한 로비가 뒤따르며, 로비는 의원에게 제공되는 금전적 기부를 포함하기도 합니다. 이를 다루는 한 가지 방안은, 의원이 어떤 출처로부터든 기부를 받도록 허용하되 그 기부 내역을 이용해 표의 가중치를 조정하는 것입니다. 어떤 의원이 특정 업계로부터 큰 재정적 지원을 받았다면, 그 업계에 유리한 표는 그만큼 낮게 계산됩니다. 여기서는 이렇게 가중된 표결의 결과를 계산합니다.

표결은 단 한 번 이루어지며 선택지는 두 가지입니다: 현행 유지(의료 업계가 선호)와 새로운 의료 제도의 도입입니다. 각 의원에 대해, 의료 업계로부터 받은 모든 금전적 기부와 그 기부가 이루어진 날짜가 주어집니다. 표결 직전 1000일 이내에 이루어진 기부만 계산에 반영됩니다. 표결이 TT일에 열릴 때, tt일에 이루어진 기부는 0≤T−t<10000 \le T - t < 1000을 만족할 때만 유효합니다.

DD를 한 의원이 받은 유효한 기부의 총액(달러 단위)이라고 합시다.

  • 의원이 새 제도에 반대(의료 업계에 유리한 쪽)로 투표하면, 그 표는 새 제도에 대한 반대표 11+D/10000\frac{1}{1 + D/10000}장으로 계산됩니다.
  • 의원이 새 제도에 찬성으로 투표하면, 그 표는 온전한 찬성표 한 장으로 계산됩니다.

새로운 의료 제도에 대한 찬성표와 반대표의 가중 합계를 각각 구하세요.

입력

첫 줄에 데이터 집합의 개수 KK가 주어집니다. 이어서 KK개의 데이터 집합이 다음 형식으로 주어집니다.

각 데이터 집합의 첫 줄에는 세 정수 nn, mm, TT가 주어집니다. nn은 의원 수(1≤n≤10001 \le n \le 1000), mm은 기부 건수(0≤m≤1000000 \le m \le 100000), TT는 표결이 열리는 날짜입니다.

이어서 mm개의 줄이 주어지며, 각 줄은 하나의 기부를 나타냅니다. 각 줄에는 두 정수 ii, tt와 실수 dd가 있습니다. 1≤i≤n1 \le i \le n은 기부를 받은 의원의 번호, tt는 기부가 이루어진 날짜, dd는 기부 금액입니다. 기부는 0≤T−t<10000 \le T - t < 1000일 때만 유효합니다.

이어서 nn개의 줄이 주어지며, ii번째 줄에는 ii번 의원의 투표를 나타내는 한 문자가 있습니다. Y는 의원이 개혁(새 제도)에 찬성했음을, N은 반대했음을 뜻합니다.

출력

각 데이터 집합에 대해, 먼저 한 줄에 Data Set x:를 출력합니다. 여기서 xx는 데이터 집합의 번호이며 1부터 시작합니다. 다음 줄에는 새 제도에 대한 찬성표의 가중 합계와 반대표의 가중 합계를 공백 하나로 구분하여, 각각 소수점 아래 둘째 자리까지 반올림하여 출력합니다. 연속한 데이터 집합 사이에는 빈 줄을 하나 둡니다.

예제1

  1. 예제 1

    입력
    2
    3 5 2000
    1 1500 500.3
    3 1999 999.2
    2 2002 6822
    2 1000 1000
    1 1132 723.1
    N
    N
    Y
    2 0 2000
    Y
    N
    
    예상 출력
    Data Set 1:
    1.00 1.89
    
    Data Set 2:
    1.00 1.00