[蓝桥杯 2024 省 C] 回文数组
题号:NC309003
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小蓝在无聊时随机生成了一个长度为 n 的整数数组,数组中的第 i 个数为 a_i,他觉得随机生成的数组不太美观,想把它变成回文数组,也是就对于任意 i\in [1,n] 满足 a_i=a_{n-i+1}。小蓝一次操作可以指定相邻的两个数,将它们一起加 1 或减 1;也可以只指定一个数加 1 或减 1,请问他最少需要操作多少次能把这个数组变成回文数组?

输入描述:

输入的第一行包含一个正整数 n

第二行包含 n 个整数 a_1, a_2,\cdots, a_n,相邻整数之间使用一个空格分隔。
1 \le n \le 10^5-10^6 \le a_i \le 10^6

输出描述:

输出一行包含一个整数表示答案。
示例1

输入

复制
4
1 2 3 4

输出

复制
3

说明

第一次操作将 a_1, a_21,变为 2, 3, 3, 4

后面两次操作将 a_11,变为 4,3,3,4