#G0006. 序列划分(sequence)

序列划分(sequence)

【题目描述】

遗憾总是伴随生活始终,正如某人再无机会拥有一只黑猫。

所幸某人还有一个严格递增的序列 𝑎1,𝑎2,..,𝑎𝑛𝑎_1,𝑎_2,..,𝑎_𝑛,请帮助他将序列拆分成若干个大小大于 1 的子序列𝐴1,𝐴2,..,𝐴𝑘 𝐴_1,𝐴_2,..,𝐴_𝑘(不要求连续),使其不重不漏,且均为等差数列。

若不存在一个拆分方案,输出 −1,否则请最小化子序列公差的最大值,即求 max1𝑖𝑘max_{1≤𝑖≤𝑘}{𝐴𝑖,2𝐴𝑖,1𝐴_{𝑖,2}−𝐴_{𝑖,1}} 的最小值。

【输入格式】

从文件 sequence.in 中读入数据。

第一行一个数 𝑛。

第二行 𝑛 个数,即 𝑎1,𝑎2,..,𝑎𝑛𝑎_1,𝑎_2,..,𝑎_𝑛

【输出格式】

输出到文件 sequence.out 中。

输出为一个数,即答案的最小值。

5
5 6 8 9 11
3
6
1 2 3 100 101 102
1

【样例1解释】

一种可能的划分方式为 {5,8,11} 与 {6,9},可以证明没有更优的划分方式。

数据规模与约定

对于所有数据,1𝑛35001𝑎𝑖109𝑎𝑖1≤𝑛≤3500,1≤𝑎_𝑖≤10^9,𝑎_𝑖 严格递增。