操作数组
题号:NC252041
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定两个长度为n的数组ab(下标从1开始),你的目标是使a=b,为了完成你的目标,你可以执行以下操作任意次(也可以是0次):

  • 选择两个正整数i,j,满足1 \le i,j \le ni \not = j,使a_{i}变成a_{i} -1a_{j}变成a_{j} +1

尽管你可以执行任意次操作,但这里求的是最小操作次数。如果无论如何都不能使a = b,请报告。

输入描述:

第一行包含一个正整数n (2 \leq n \leq 10^{5})n表示数组的长度。

第二行包含n个正整数a_1,a_2,\ldots,a_n (1\le a_{i} \le 10^9)

第三行包含n个正整数b_1,b_2,\ldots,b_n (1\le b_i\le 10^9)

输出描述:

输出包含一个整数,表示最小操作次数。如果无论如何都不能使a = b,输出-1
示例1

输入

复制
4
1 2 3 4
4 3 2 1

输出

复制
4