장비 교체

NYPC 2024 · Round 2-A

NN 개의 캐릭터를 좋아하는 순서로 나열하였다. 각 캐릭터는 장비를 하나씩 가지고 있다.

ii 번째 캐릭터의 장비를 업그레이드하는 데 UiU_i 만큼의 돈이 비용으로 든다. 또한, ii 번째 캐릭터의 장비를 다운그레이드할 수도 있는데, 이때는 DiD_i 만큼의 돈을 돌려받는다. 물론, 업그레이드 또는 다운그레이드가 불가능할 수도 있다.

캐릭터의 장비를 각각 업그레이드하거나, 유지하거나, 다운그레이드하려 한다. 그리고 그 결과를 길이가 NN인 문자열로 나타낼 것이다. ii 번째 캐릭터의 장비를 업그레이드했다면 문자열의 ii 번째 문자가 +, 유지했다면 0, 다운그레이드했다면 -가 된다.

최종적으로 들어간 돈이 없도록 하면서, 좋아하는 캐릭터일수록 더 좋은 장비를 얻도록 하고 싶다. 따라서, 문자들의 사전순 순서를 +, 0, -로 고려했을 때, 사전순으로 가장 먼저 오는 결과 문자열을 구하는 프로그램을 작성하라.

입력 형식

첫 줄에 캐릭터의 수를 나타내는 정수 NN이 주어진다. (1N5000001 \leq N \leq 500\,000)

그다음 줄에 NN 개의 정수 U1,U2,,UNU_1, U_2, \cdots, U_N가 공백으로 구분되어 주어진다. 단, UiU_i1-1인 경우 장비를 업그레이드할 수 없음을 의미한다. (1Ui100000000-1 \leq U_i \leq 100\,000\,000)

그다음 줄에 NN개의 정수 D1,D2,,DND_1, D_2, \cdots, D_N가 공백으로 구분되어 주어진다. 단, DiD_i1-1인 경우 장비를 다운그레이드할 수 없음을 의미한다. (1Di100000000-1 \leq D_i \leq 100\,000\,000)

출력 형식

첫 줄에 문제의 정답이 되는 길이가 NN인 결과 문자열을 출력한다.

예제 1

입력

4 2 -1 6 1 9 6 -1 0

출력

+-0+

예제 2

입력

3 2 4 1 5 3 1

출력

+-+

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 33

N15N \le 15

종류 2: 28

N5000N \le 5\,000

종류 3: 39

추가적인 제한 조건이 없음.

해설