개의 캐릭터를 좋아하는 순서로 나열하였다. 각 캐릭터는 장비를 하나씩 가지고 있다.
번째 캐릭터의 장비를 업그레이드하는 데 만큼의 돈이 비용으로 든다. 또한, 번째 캐릭터의 장비를 다운그레이드할 수도 있는데, 이때는 만큼의 돈을 돌려받는다. 물론, 업그레이드 또는 다운그레이드가 불가능할 수도 있다.
캐릭터의 장비를 각각 업그레이드하거나, 유지하거나, 다운그레이드하려 한다.
그리고 그 결과를 길이가 인 문자열로 나타낼 것이다.
번째 캐릭터의 장비를 업그레이드했다면 문자열의 번째 문자가 +
, 유지했다면 0
,
다운그레이드했다면 -
가 된다.
최종적으로 들어간 돈이 없도록 하면서,
좋아하는 캐릭터일수록 더 좋은 장비를 얻도록 하고 싶다.
따라서, 문자들의 사전순 순서를 +
, 0
, -
로 고려했을 때,
사전순으로 가장 먼저 오는 결과 문자열을 구하는 프로그램을 작성하라.
첫 줄에 캐릭터의 수를 나타내는 정수 이 주어진다. ()
그다음 줄에 개의 정수 가 공백으로 구분되어 주어진다. 단, 가 인 경우 장비를 업그레이드할 수 없음을 의미한다. ()
그다음 줄에 개의 정수 가 공백으로 구분되어 주어진다. 단, 가 인 경우 장비를 다운그레이드할 수 없음을 의미한다. ()
첫 줄에 문제의 정답이 되는 길이가 인 결과 문자열을 출력한다.
4 2 -1 6 1 9 6 -1 0
+-0+
3 2 4 1 5 3 1
+-+
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 33점
종류 2: 28점
종류 3: 39점
추가적인 제한 조건이 없음.