#P14743. [ICPC 2021 Seoul R] Squid Game

[ICPC 2021 Seoul R] Squid Game

Description

:::align{center} :::

你是参加一系列带有致命惩罚的儿童游戏的 456456 名玩家之一。穿过若干迷宫般的走廊和楼梯后,你打开了下一个游戏的大门。场上有三个容量无限的桶,每个桶中都装有整数升的水。桶的编号从 1133。桶 112233 中初始的水量分别给定为 XXYYZZ

在任何时候,你可以通过从一个桶向另一个桶倒水,使后一个桶中的水量翻倍。具体来说,你可以从一个装有 yy 升水的桶,向一个装有 xx 升水的桶(其中 xyx \leq y)倒水,直到后者装有 2x2x 升水,而前者剩余 yxy - x 升水。注意 xxyy 始终是整数,且 xyx \leq y。参见图 J.1。

:::align{center}

图 J.1 一次倒水过程 :::

为了生存,你必须在有限次倒水内清空其中一个桶。幸运的是,这总是可能的。给定三个桶中水的初始量 XXYYZZ,请编写一个程序,输出一系列倒水操作,直到其中一个桶首次变空为止。

Input Format

你的程序需要从标准输入读取数据。输入的第一行包含三个整数 XXYYZZ (1XYZ1091 \leq X \leq Y \leq Z \leq 10^9),分别表示桶 112233 中水的初始量。

Output Format

你的程序需要向标准输出写入结果。第一行应输出直到其中一个桶首次变空为止的倒水次数 mmmm 应不超过 1,0001,000。接下来的 mm 行,每行包含两个整数 AABB (1AB31 \leq A \neq B \leq 3),表示你在一次倒水过程中从桶 AA 向桶 BB 倒水。你必须保证在第 mm 次倒水后,其中一个桶首次变空。如果有多种方法可以清空其中一个桶,则输出其中任意一种即可。

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

Hint

翻译由 DeepSeek V3 完成