풍선 나눠 주기
시간 제한6초메모리 제한512 MB
모든 비율 P_i/j를 큰 값부터 순위를 매기고, 각 참가자마다 순위 N 이내에 드는 비율의 개수를 센다. 마지막 순위에 동점이 있으면 그 비율도 모두 포함한다.
문제
어떤 대회에 참가자가 명 있다. 번 참가자의 점수는 점이다.
주최 측은 풍선 개를 다음 규칙으로 나눠 준다.
- 참가자 와 자연수 의 모든 짝에 대해 비율 를 계산한다.
- 계산한 비율을 전부 한 목록에 모아 값이 큰 것부터 작은 것 순으로 순위를 매긴다. 값이 같은 비율은 순위도 같다. 정확히 말하면 어떤 비율의 순위는 그보다 값이 큰 비율의 개수에 1을 더한 값이다.
- 참가자는 자기 비율 중 순위가 이하인 것 하나마다 풍선을 하나씩 받는다. 풍선을 받는 마지막 순위에 여러 비율이 같은 값으로 묶이면 묶인 비율이 모두 풍선을 받으므로, 나눠 준 풍선이 개보다 많아질 수 있다.
각 참가자가 받는 풍선의 개수를 구하여라.
예를 들어 참가자가 명이고 점수가 , , , , 이며 풍선이 개라고 하자. 비율을 소수점 아래 둘째 자리까지 반올림해 적으면 앞부분은 다음과 같다.
각 비율의 순위는 다음과 같다. 굵게 쓴 순위는 이하여서 그 비율이 풍선을 받는다. 이 예에서 인 비율은 순위가 모두 10보다 크다.
그래서 다섯 참가자가 받는 풍선은 차례대로 1개, 1개, 4개, 3개, 2개이다. 모두 합치면 11개인데, 와 가 둘 다 로 같아 순위 10에 함께 묶이기 때문이다.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다.
각 테스트 케이스는 두 줄로 이루어진다. 첫째 줄에 정수 과 이 공백으로 구분되어 주어진다. 둘째 줄에 개의 정수 이 공백으로 구분되어 주어진다.
제한:
- 모든 테스트 케이스의 을 더한 값은 이하이다
출력
각 테스트 케이스마다 한 줄에 개의 정수를 공백 하나로 구분해 출력한다. 번째 정수는 번 참가자가 받는 풍선의 개수이다.