QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 512 MB Total points: 110

#13387. Fliper

Statistics

Mirko 和 Slavko 偶然发现了一台旧弹球机。游戏由一个小金属球组成,它在机器内部移动,撞击并从一些障碍物上反弹。

游戏在一个平面上进行,平面上有 $n$ 个障碍物。障碍物由相对于坐标轴倾斜 $45^\circ$ 的单位长度线段表示。障碍物由其中心点 $(x_i, y_i)$ 和一个字符('/' 或 '\',表示障碍物的方向)唯一确定。平面上还有一个始终沿平行于坐标轴的四个方向之一移动的球。如果球撞击到障碍物,其运动方向会改变 $90^\circ$,球继续移动。注意,障碍物是双面的,这意味着球可以从障碍物的两侧反弹。

Mirko 和 Slavko 决定用一层新漆来修复这台弹球机。他们手头有四个装有四种不同颜色的油漆桶。他们想给每个障碍物涂上这四种颜色中的一种。

Mirko:“你知道吗,我在想。球的路径只有两种可能性。” Slavko:“你是什么意思?” Mirko:“嗯,要么球会陷入一个循环,周期性地重复相同的反弹序列,要么在某个时刻它会飞向无穷远处。” Slavko:“嗯,你说得对。那么也许我们可以尝试给障碍物上色,使得对于每个循环,每种颜色在循环中出现的次数相等,且这个次数是偶数。例如,如果某个循环由 24 次反弹组成,我们应该让每种颜色出现 6 次,而 6 是一个偶数。” Mirko:“那如果没有这样的上色方案呢?” Slavko:“你知道该怎么做,直接输出 -1。”

请帮助 Mirko 和 Slavko 确定一种满足所需条件的障碍物上色方案(如果存在的话)。

输入格式

第一行包含一个正整数 $n$ ($1 \le n \le 500\,000$),表示障碍物的数量。 接下来的 $n$ 行中,第 $i$ 行包含整数 $x_i$ 和 $y_i$ ($0 \le |x_i|, |y_i| \le 10^9$) 以及一个字符 $c_i$ ('/' 或 '\'),描述第 $i$ 个障碍物。没有两个障碍物位于相同的位置。

输出格式

如果没有满足条件的上色方案,仅输出一行 -1。 否则,在唯一的一行中输出一个由空格分隔的 $n$ 个数字(1, 2, 3 或 4)的序列,表示有效的上色方案,即按顺序排列的障碍物颜色。如果存在多个解,输出任意一个即可。

子任务

子任务 分值 数据范围
1 20 $1 \le n \le 40$
2 20 球陷入的循环最多只有一个
3 70 无附加限制

样例

输入 1

4
1 1 \
3 1 /
3 2 \
1 2 /

输出 1

-1

说明 1

球可能会陷入一个包含 4 次反弹的循环,在给定的 4 个障碍物之间来回反弹。为了使每种颜色出现次数相等,每种颜色应出现一次,但 1 不是偶数。

输入 2

9
1 2 \
1 3 /
2 1 \
2 2 \
2 3 \
3 1 /
3 2 \
4 2 /
4 3 \

输出 2

1 3 2 4 1 3 2 4 1

说明 2

球只能陷入一个循环中。下图展示了一种有效的上色方案。从障碍物 1 开始,沿顺时针方向移动,颜色重复为 1 3 1 4 2 3 2 4。

输入 3

12
1 2 \
1 3 /
2 1 \
2 2 \
2 3 \
2 4 /
3 1 /
3 2 \
3 3 \
3 4 \
4 2 /
4 3 \

输出 3

1 3 2 4 2 4 1 3 1 3 2 4

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.