欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1546A.AquaMoon and Two Arrays
AquaMoon and Two Arrays
题目描述
AquaMoon 和 Cirno 正在玩一个有趣的数组游戏。Cirno 准备了两个数组 和 ,它们都包含 个非负整数。AquaMoon 可以进行如下操作任意次(也可以不做操作):
- 她选择两个下标 和 (),然后将数组 的第 个元素减 ,并将第 个元素加 。操作后, 的第 个元素变为 ,第 个元素变为 。每次操作后,数组 的所有元素都必须保持非负。如果 ,则该操作不会改变数组 。
AquaMoon 想通过若干次操作使数组 和 完全相等。只有当对于所有 都有 时,两个数组才被认为是相等的。
请你帮助 AquaMoon 找出一组操作序列,使她能够完成目标;或者判断是否不可能通过上述操作将数组 变为数组 。
注意,你不需要最小化操作次数。
输入格式
输入包含多组测试数据。第一行包含一个整数 (),表示测试用例的数量。
每个测试用例的第一行包含一个整数 ()。
第二行包含 个整数 ()。所有 的和不超过 。
第三行包含 个整数 ()。所有 的和不超过 。
输出格式
对于每个测试用例,如果无法通过若干次操作将数组 变为数组 ,则输出一行 "-1"(不含引号)。
否则,第一行输出一个整数 (),表示操作次数。接下来输出 行,每行两个整数 和 ,表示一次操作中选择的下标。
可以证明,如果存在可行解,则一定存在 的解。
如果有多种可行方案,你可以输出任意一种。
说明/提示
在第一个样例中,操作如下:
- ,:;
- ,:;
在第二个样例中,不可能将两个数组变为相等。
由 ChatGPT 4.1 翻译
样例
4
4
1 2 3 4
3 1 2 4
2
1 3
2 1
1
0
0
5
4 3 2 1 0
0 1 2 3 4
2
2 1
3 1
-1
0
6
1 4
1 4
1 5
1 5
2 5
2 5
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |