N개의 금액과 부호 있는 합계 F가 주어질 때, 합이 F가 되는 모든 부호 선택에서 각 금액이 더하기로 정해지는지, 빼기로 정해지는지, 자유로운지를 판정한다.
보통6동적 계획법백트래킹완전 탐색구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB부패 척결 재단이 놀로니아에서 대규모 부패 사건을 적발했다. 수사 과정에서 조직의 불법 거래를 적어 둔 공책과 장부 여러 권을 압수했다.
장부의 페이지에는 거래 금액이 놀로니아의 화폐 단위인 닐로고(기호는 N$)로 적혀 있고, 그 페이지의 거래를 모두 합한 현금 흐름도 함께 적혀 있다. 예를 들어 어떤 페이지에 N$ 7 입금, N$ 2 입금, N$ 3 출금, N$ 1 입금, N$ 11 출금이 기록되어 있으면 이 페이지의 현금 흐름은 7+2−3+1−11=−4 이다.
장부를 적은 사람들은 수사를 어렵게 하려고 각 거래가 입금인지 출금인지 표시하지 않았다. 위의 예에서 페이지에 남은 금액 기록은 7, 2, 3, 1, 11 뿐이다. 반면 현금 흐름은 언제나 부호까지 그대로 적혀 있어서, 이 페이지에는 −4가 적혀 있다.
기소하려면 각 거래가 입금인지 출금인지 확실하게 말할 수 있어야 한다. 위의 예에서 N$ 7은 반드시 입금이고 N$ 11은 반드시 출금이다. 그러나 N$ 2, N$ 3, N$ 1은 어느 쪽인지 확정할 수 없다. N$ 2와 N$ 1이 입금이고 N$ 3이 출금일 수도 있고, N$ 2와 N$ 1이 출금이고 N$ 3이 입금일 수도 있다.
거래가 많이 적힌 페이지는 손으로 복원하기 어렵다. 각 거래의 종류를 판정하는 프로그램을 작성하시오.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에 페이지에 적힌 거래의 개수 N과 그 페이지의 현금 흐름 F가 공백으로 구분되어 주어진다(2≤N≤40, −16000≤F≤16000). 이어지는 N개의 줄에는 i번째 거래의 금액 Ti가 한 줄에 하나씩 주어진다(1≤Ti≤1000).
마지막 테스트 케이스 다음 줄에는 공백으로 구분된 0 두 개만 주어진다.
각 테스트 케이스마다 N개의 문자로 이루어진 한 줄을 출력한다. i번째 문자는 i번째 거래가 반드시 입금이면 +, 반드시 출금이면 -, 어느 쪽인지 확정할 수 없으면 ?이다.
적힌 현금 흐름을 만드는 입금과 출금의 조합이 없으면 그 테스트 케이스에는 * 한 문자만 있는 줄을 출력한다.