AT_abc024_d [ABC024D] 動的計画法

题目描述

高桥君使用了一张很大的方格纸,纸上共划分横纵各 $10^8$ 个小格子,他要完成一个挑战: 「从最左下角开始,每次只能向右或向上移动一格,计算到达每个小格子的方法总数,并将结果对 $1,000,000,007$ 取余。」 高桥君喜欢动态规划方法,因此很快意识到可以通过下面的算法来解决: 1. 在最左边的一整列和最下边的一整行的所有格子中填上数字 $1$。 2. 对于其他未填数字的格子,如果该格子的左边和下边的格子都已经填了数字,则将这两个格子里的数字相加,并将结果对 $1,000,000,007$ 取余后填入当前格子。 3. 重复步骤 2,直到所有格子都填上数字。 通过这个方法,高桥君在方格纸上完成了「从左下角到达每个格子的路径数,对 $1,000,000,007$ 取余」的计算。 然而,在完成后,由于过于兴奋,他不小心撕掉了一部分方格纸。现在他手中只剩下包含某个格子及其上方和右方这些格子的方格纸碎片。他想将碎片放回原位,但因为方格纸太大,所以找不到正确的位置。 根据碎片上的信息,请帮高桥君找出这块碎片原来在方格纸中的具体位置。 给定的是某个初始位置 $(r, c)$ 以及其相邻的两个位置 $(r, c+1)$ 和 $(r+1, c)$ 中的整数 $A$、$B$ 和 $C$,请找出 $r$ 和 $c$ 的值。 注意,最左下角的格子位置是用 $(0, 0)$ 表示。

输入格式

输入为以下格式,通过标准输入给出: > $ A $ $ B $ $ C $ - 第一行给出了 $(r, c)$ 位置的整数 $A$,满足 $0 \leq A < 1,000,000,007$。 - 第二行给出了 $(r, c+1)$ 位置的整数 $B$,满足 $0 \leq B < 1,000,000,007$。 - 第三行给出了 $(r+1, c)$ 位置的整数 $C$,满足 $0 \leq C < 1,000,000,007$。 - 给定的 $A$、$B$ 和 $C$ 一定能找到满足 $0 \leq r, c < 99,999,999$ 的解。

输出格式

输出两个整数 $r$ 和 $c$,用空格隔开,表示碎片原来所在的行和列。若有多个可能的解,请输出 $r$ 最小的组合;若仍有多种可能,则输出其中 $c$ 最小的。输出末尾应包含一个换行。

说明/提示

### 样例解释 高桥君手里的碎片如下: ![](https://img.atcoder.jp/img/abc/024/quweiroewqor/C_2.png) 该碎片可能源自下图所示位置: ![](https://img.atcoder.jp/img/abc/024/quweiroewqor/C_3.png) **本翻译由 AI 自动生成**