#P0223. C.递增 (increase)

C.递增 (increase)

题目背景

普通数独的规则为:在每个单元格中填入 1199 之间的一个整数,使得任何行、列或粗体标注的 3×33 \times 3 区域中的数字都不重复。


题目描述

考虑一种数独的变体——温度计数独:普通数独规则适用。网格中包含一些温度计形状,数字必须严格从球状部分到扁平部分递增。如果你不知道普通数独规则,请查看【题目背景】。

现在考虑下面的一个温度计数独:

容易发现,由于第 11 行的温度计从 22 开始,77 结束,并且由 66 个数组成,因此第 11 行第 272 \sim 7 列可以确定依次是 272 \sim 7

同理,给定一个值域在 [1,106][1,10^6] 上的严格递增正整数序列 an{a_n},如果隐去其中的若干个数字后,加上严格递增的条件,依旧有可能还原出原来的序列。

例如,令 a=[1,2,3,5]a = [1,2,3,5],则:

  • 若隐去 a1,a2a_1,a_2,得到 [,,3,5][*,*,3,5],由于 1a1<a2<31 \le a_1 < a_2 < 3,可以确定 a1=1,a2=2a_1=1,a_2=2,由此还原。
  • 若隐去 a3a_3,得到 [1,2,,5][1,2,*,5],则只能推断出 a33,4a_3 \in {3,4},无法还原。

现在,你需要确定,你最多可以隐去多少个数字,使得隐去后依旧可以还原得到最初的序列。


输入格式

从文件 increase.in 中读入。

第一行一个整数 nn,表示序列 aa 的长度。

第二行 nn 个整数,描述序列 aa


输出格式

输出到文件 increase.out 中。

输出仅一行一个整数,表示你最多可以隐去的数字数量。


输入输出样例

输入样例 1

4
1 2 3 5

输出样例 1

2

样例说明

容易发现,隐去 a1,a2a_1,a_2 是最优的方法。解释见【题目描述】。


其他样例

样例 2

见下发压缩包中 increase2.inincrease2.ans。 该样例符合测试点 121 \sim 2 的限制。

样例 3

见下发压缩包中 increase3.inincrease3.ans。 该样例符合测试点 353 \sim 5 的限制。

样例 4

见下发压缩包中 increase4.inincrease4.ans。 该样例符合测试点 7107 \sim 10 的限制。


数据规模与约定

测试点 nn \le 特殊性质
1 ∼ 2 20
3 ∼ 5 10310^3
6 性质 A
7 ∼ 10 10610^6

性质 A: ai=ia_i = i


约束

  • 1n1061 \le n \le 10^6
  • 1ai1061 \le a_i \le 10^6
  • an{a_n} 严格递增