给定一个整数数组,我们需要通过一系列操作将其变成回文数组。每次操作可以选择两个相邻元素,增加它们的值。目标是计算至少需要多少次操作使得数组变成一个回文数组。如果不可能实现,则返回-1。
回文数组的定义是:该数组从左到右和从右到左完全相同。
a[i]
和 a[n-i-1]
,它们的值必须相等。小红有一个整数数组,长度为n。她希望通过一系列操作将数组变成一个回文数组。每次操作可以选择数组中任意两个相邻的元素ai和ai+1,将它们的值同时加一。
请你计算至少需要多少次操作使得数组变成一个回文数组。如果不可能,则输出−1。否则输出具体的操作方案。
注意:回文数组指该数组从左到右与从右到左完全相同。
第一行包含一个正整数n(1≦n≦105),表示数组的长度。
第二行包含n个整数,表示数组的各个元素ai(1≦ai≦109)。
如果不能通过操作使得数组变成回文数组,则输出−1。
否则先输出一个整数m,接下来m行,每行包含两个整数i和x,表示将a和ai+1同时加x,表示进行了x次操作。 你需要保证0≦m≦n,x>0,并且∑x最小
如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
输入
3
1 3 2
输出
1
1 1
可以对数组的前两个元素进行一次操作,使1变为2,3变为4,此时数组变为[2,4,2],为回文数组。