숫자 앨범
시간 제한3초메모리 제한128 MB
숫자 앨범에 삽입과 삭제가 일어날 때마다 서로 다른 비어 있지 않은 부분 다중집합의 최솟값 평균을 출력합니다.
문제
쟈니는 숫자를 모으는 사람이다. 그는 큰 앨범에 숫자를 보관하는데, 새 숫자를 넣고 오래된 숫자를 지우면서 앨범을 계속 갱신한다.
이 앨범은 쟈니가 가장 아끼는 보물이라서, 누구도 숫자를 다른 숫자로 바꿔 놓지 못하기를 바란다. 그래서 그는 다음과 같이 정해지는 체크섬을 관리한다. 앨범의 숫자로 만들 수 있는 서로 다른 비어 있지 않은 부분 다중집합을 모두 구하고, 각 부분 다중집합의 최솟값을 찾은 뒤, 그 최솟값들의 산술 평균을 계산한다.
같은 숫자가 앨범에 여러 번 들어 있을 수 있으므로, 부분집합은 다중집합이다. 각 숫자는 부분 다중집합에 여러 번 들어갈 수 있지만, 앨범 전체에 있는 개수를 넘을 수는 없다. 두 다중집합은 모든 숫자의 개수가 같을 때만 같다. 예를 들어 앨범 에는 , , , , , , , , , , 의 서로 다른 부분 다중집합 11개가 있다.
앨범은 자주 바뀌어서 체크섬을 손으로 계산하기는 번거롭다. 갱신 횟수와 각 연산을 읽고, 연산마다 체크섬을 구해 출력하는 프로그램을 작성하라.
입력
첫 줄에는 갱신 횟수를 나타내는 양의 정수 ()이 주어진다. 이어지는 개의 줄에는 각각 부호 + 또는 -, 공백 하나, 그리고 수 ()가 주어진다. +는 를 앨범에 넣고, -는 앨범에 있는 하나를 뺀다.
앨범은 처음에 비어 있다. 연산 후에는 항상 비어 있지 않으며, 앨범에 있는 숫자만 삭제된다.
출력
정확히 개의 줄을 출력한다. 번째 줄에는 번째 갱신 후의 체크섬을 출력한다. 각 체크섬에 대해 절대 오차 또는 상대 오차가 을 넘지 않으면 정답으로 인정한다.
힌트
첫 번째 샘플에서 모든 삽입이 끝난 후 앨범에는 가 들어 있다. 이때 쟈니가 고려하는 부분 다중집합은 위에서 나열한 11개이다. 이들의 최솟값은 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 5이다. 따라서 체크섬은 이다.