점원이 손님에게 거스름돈을 줄 때는 보통 동전 개수를 가장 적게 해서 건넭니다. 예를 들어 $2를 거슬러 줘야 하는 손님에게는 $1 동전 2개나 50c 동전 4개가 아니라 $2 동전 1개를 주는 것이 보통입니다. 하지만 서랍에 든 동전 재고가 한쪽으로 치우쳐 있으면, 최소 개수로 주는 방법이 항상 최선은 아닙니다. $1 동전이 넘칠 만큼 쌓여 있다면, 그 칸을 줄이기 위해서라도 $1 동전 2개를 주는 편이 더 나을 수 있습니다.
계산대 서랍에는 $2, $1, 50c, 20c, 10c 동전을 담는 칸이 5개 있습니다. 서랍의 불균형도(imbalance) 를 다음과 같이 정의합니다. 어느 한 칸이 가진 동전 개수의 최솟값을 min 이라 합시다. 불균형도는 각 칸에 대해 min 을 초과하는 개수의 제곱을, 다섯 칸 모두에 대해 더한 값입니다. 예를 들어 $2, $1, 50c, 20c, 10c 동전이 각각 2, 3, 4, 3, 5개 있다면 min = 2이고, 불균형도는 (2−2)2+(3−2)2+(4−2)2+(3−2)2+(5−2)2=0+1+4+1+9=15 입니다.
서랍에 든 동전과 거슬러 줄 금액이 주어질 때, 거스름돈을 주고 난 뒤 서랍에 남는 동전의 불균형도가 가장 작아지도록 어떤 동전을 줄지 고르세요. 같은 최소 불균형도를 만드는 방법이 여러 가지라면, $2 동전을 가장 많이 주는 방법을 고릅니다. 그것도 같다면 $1 동전을 가장 많이, 그 다음 50c, 그 다음 순서로 우선합니다.
입력에는 여러 개의 거스름돈 문제가 한 줄에 하나씩 들어 있습니다. 각 줄은 정수 5개와 금액 하나로 이루어집니다. 정수 5개는 서랍에 있는 $2, $1, 50c, 20c, 10c 동전의 개수입니다. 금액은 $n.m 형태이며, 달러 정수부 n은 항상 있고(0일 수도 있음), 센트부 m은 항상 두 자리입니다. 이것이 거슬러 줄 금액입니다.
입력은 0 다섯 개와 $0.00 만 있는 줄로 끝나며, 이 줄은 풀어야 할 문제가 아닙니다. 거슬러 줄 금액은 항상 0보다 크고 $5를 넘지 않습니다.
각 문제마다 Problem #k: 로 시작하는 한 줄을 출력합니다. k는 입력에서 그 문제의 순서이며 1부터 셈니다. 이어서 줄 동전을 출력합니다. 사용하는 각 액면에 대해 $2, $1, 50c, 20c, 10c 순서로 개수와 액면을 적습니다(예: 2 50c). 여러 개면 쉼표로 구분하고 마지막 항목 앞에 and 를 넣으며, 줄 끝에 coin(s) 를 붙입니다. 정확한 거스름돈을 줄 수 없으면 Problem #k: 뒤에 대신 not possible 을 출력합니다.