CSPSMK06A. 等差数列

提交3 通过2
通过率66.7%
文件IO启用
输入文件Aseq.in
输出文件Aseq.out
时间限制1000ms
内存限制256MiB
    ID: 14543 传统题 文件IO 输入文件:Aseq.in 输出文件:Aseq.out 1000ms 256MiB 尝试: 3 已通过: 2 难度: 普及 上传者: 标签>C++CSP-S考前模拟

题目描述

题目描述

给出长度为 nn 的整数序列 aa,你可以执行以下操作任意次,每个位置至多只能被操作一次。

选择一个位置 ii,将 aia_i 修改为 ai+1a_i+1 或 ai−1a_i-1。

请问能否经过若干次操作后,序列 aa 恰好构成等差数列,若可以,则输出最少的操作次数,否则输出 −1-1​。

等差数列是指任意两项相邻项的差相同的数列,例如 {1,3,5,7,9},{2},{3,2}\{1,3,5,7,9\},\{2\},\{3,2\} 均为等差数列。

输入格式

第一行一个正整数 nn。

第二行给出一个整数序列 aa。

输出格式

若可以,则输出最少的操作次数,否则输出 −1-1。

输入样例 #1

4
24 21 14 10

输出样例 #1

3

输入样例 #2

3
14 5 1

输出样例 #2

-1

说明提示

【样例 1 解释】

修改为 {25,20,15,10}\{25,20,15,10\}。

输入样例 #3

1
96708750

输出样例 #3

0

数据范围

对于 30%30\% 的数据,1≤n≤51 \leq n \leq 5。

对于 100%100\% 的数据,1≤n≤105,−109≤ai≤1091 \leq n \leq 10^5,-10^9 \leq a_i \leq 10^9