移动石头
题号:NC21740
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

有n堆石头排成一排,标号为0到n-1,第i堆石头有a[i]个石头
每一步你可以从某一堆取一个石头放到相邻的石头堆里
请问需要多少步可以将a数组变成b数组

输入描述:

第一行先输入一个整数n (1 ≤ ≤ 50)
第二行输入n个数ai
第三行输入n个数bi

0 ≤ ai, bi ≤ 106

输出描述:

输出一个整数表示最少的操作步数,如果无法将a数组变成b数组,输出-1
示例1

输入

复制
2
1 2
2 1

输出

复制
1
示例2

输入

复制
2
10 0
0 10

输出

复制
10
示例3

输入

复制
3
0 0 1
1 0 0

输出

复制
2
示例4

输入

复制
9
3 10 0 4 0 0 0 1 0
5 5 0 7 0 0 0 0 1

输出

复制
9

备注:

子任务1:n <= 10
子任务2:n <= 20
子任务3:无限制