QOJ.ac

QOJ

Time Limit: 0.5 s Memory Limit: 64 MB Total points: 100

#13815. 乌托邦划分

Statistics

美丽的乌托邦土地曾一度饱受战争蹂躏。当敌对行动平息后,该国被一条经线(南北向线)和一条纬线(东西向线)分成了四个区域。这些线的交点被称为点 $(0,0)$。

所有四个部分都自称为乌托邦,但随着时间的推移,它们通常被称为乌托邦 1(东北)、乌托邦 2(西北)、乌托邦 3(西南)和乌托邦 4(东南)。任何区域中的点都可以通过它到 $(0,0)$ 的东向距离和北向距离来确定。这些距离可以是负数;因此,乌托邦 2 中的点由(负,正)数对表示,乌托邦 3 中由(负,负)数对表示,乌托邦 4 中由(正,负)数对表示,而乌托邦 1 中由一对正数表示。

一个主要的问题是居民不被允许跨越边界。幸运的是,一些聪明的来自乌托邦的 IOI 参赛者开发了一种安全的传送方式。该传送装置需要使用代码数,每个代码数只能使用一次。现在,团队以及你面临的挑战是,引导传送装置从其初始位置 $(0,0)$ 开始,按照要求的顺序传送到乌托邦的各个区域。你不需要关心落在区域内的具体位置,但你会得到一个由 $N$ 个区域编号组成的序列,指定了传送装置每次需要降落的区域。你可能会被要求在连续的两次或多次传送中降落在同一个区域。在离开初始点 $(0,0)$ 之后,你绝不能降落在边界上。

你将获得 $2N$ 个代码数作为输入,并需要将它们写成 $N$ 个代码对的序列,在每个数字前加上加号或减号。如果你当前位于点 $(x,y)$ 并且使用代码对 $(+u, -v)$,你将被传送到点 $(x+u, y-v)$。你拥有这 $2N$ 个数字,你可以按任何你喜欢的顺序使用它们,每个数字前面带有加号或减号。

假设你拥有的代码数为 $7, 5, 6, 1, 3, 2, 4, 8$,并且需要根据区域编号序列 $4, 1, 2, 1$ 来引导传送装置。代码对序列 $(+7, -1)$,$(-5, +2)$,$(-4, +3)$,$(+8, +6)$ 可以实现这一目标,因为它将你从 $(0,0)$ 依次传送到位置 $(7, -1)$、$(2, 1)$、$(-2, 4)$ 和 $(6, 10)$。这些点分别位于乌托邦 4、乌托邦 1、乌托邦 2 和乌托邦 1。

任务

给你 $2N$ 个互不相同的代码数和一个包含 $N$ 个区域编号的序列,表示传送装置需要降落的区域。利用给定的数字构建一个代码对序列,引导传送装置依次通过给定的区域序列。

输入格式

你的程序需要从标准输入读取数据。

第一行包含一个正整数 $N$($1 \le N \le 10000$)。

第二行包含 $2N$ 个互不相同的整数代码数($1 \le \text{code number} \le 100000$),用单个空格分隔。

最后一行包含一个由 $N$ 个区域编号组成的序列,每个编号为 1、2、3 或 4。

输出格式

你的程序需要写入到标准输出。

输出包含 $N$ 行,每行包含一对代码数,每个代码数前面都有一个符号字符(+-)。这些代码对将引导传送装置通过给定的区域序列。

注意,符号后面不能有空格,但在第一个代码数之后必须有一个空格(例如 +7 -1)。

如果存在多个解,你的程序可以输出其中任意一个。如果无解,你的程序应该输出单个整数 0

样例

输入样例 1

4
7 5 6 1 3 2 4 8
4 1 2 1

输出样例 1

+7 -1
-5 +2
-4 +3
+8 +6

输入样例 2

4
2 5 4 1 7 8 6 3
4 2 2 1

输出样例 2

+3 -2
-4 +5
-6 +1
+8 +7

子任务

如果你的程序在时间限制内对某个测试用例输出了正确答案,你将获得该测试用例的满分,否则你将获得 0 分。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.